SQL Server CPU 100%

zxy1092003 2013-08-14 11:29:32
我们数据库服务器现在CPU 100%
版本是SQL Server 2008 R2 SP1 企业版 64位
通过profiler抓到SQL,耗CPU最高的是类似 select (sum(page_count)/128.0) from sys.dm_db_index_physical_stats(5, 269244014, NULL, NULL, 'DETAILED') 这种SQL,
请问为什么这查询索引碎片的SQL会自动执行?什么情况下会自动执行这种SQL?
有谁能帮忙解答一下,谢谢!
...全文
206 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxy1092003 2013-08-16
  • 打赏
  • 举报
回复
已经查明了,是因为有个Tivoli的监控工具造成的,就是不明白它为什么查这个,有什么用途
發糞塗牆 2013-08-14
  • 打赏
  • 举报
回复
其实看那个语句,如果是系统引起的话,我个人猜测比较大的可能是维护计划里面的“更新统计信息”或者“重建索引”或者“重组索引”这几个操作引起的。
select (sum(page_count)/128.0) from sys.dm_db_index_physical_stats(5, 269244014, NULL, NULL, 'DETAILED') 至于是不是人为导致的,还得做其他监控。
zxy1092003 2013-08-14
  • 打赏
  • 举报
回复
好的,谢谢,等问题再次重现时,我用dbcc inputbuffer看看
發糞塗牆 2013-08-14
  • 打赏
  • 举报
回复
能找到spid是什么不?然后用DBCC INPUTBUFFER(SPID)看看
zxy1092003 2013-08-14
  • 打赏
  • 举报
回复
我有用profiler进行抓,执行这种SQL的服务器正是我们的数据库服务器,loginname和NTUserName都是NT AUTHORITY\SYSTEM,现在是又没有找到相关的JOB在做维护,所以特别困惑,是不是可以使用一个SQL语句进行设定,然后就会启用相关的查询索引碎片的SQL?
Shawn 2013-08-14
  • 打赏
  • 举报
回复
看下这个系统视图的功能:返回指定表或视图的数据和索引的大小和碎片信息 是否有JOB或维护在做碎片整理? 当然,楼主看可以监控中看一下,是哪台机器,哪个用户来执行的这个操作,SPID大于50的是用户进程,小于50是系统进程。综合判断一下这条语句的来源
zxy1092003 2013-08-14
  • 打赏
  • 举报
回复
JOB里没有这种相关的SQL
Q315054403 2013-08-14
  • 打赏
  • 举报
回复
或者在JOB里,或者在三方工具里。。看看是哪个SPID,顺腾摸瓜呗 综合分析更全面
發糞塗牆 2013-08-14
  • 打赏
  • 举报
回复
看看job里面有没有启动
唐诗三百首 2013-08-14
  • 打赏
  • 举报
回复
查询spid的登录时间,主机名,程序名,

select login_time,
       host_name,
       program_name
 from sys.dm_exec_sessions
 where session_id=[spid]
Shawn 2013-08-14
  • 打赏
  • 举报
回复
--先看一下是哪个表有这样的操作?这个表数据量很大?有很多索引?有人更改了表结构?数据变化很大?
--如果是系统自动统计,可以先结束掉这个进程。等系统空闲的时候,再重建索引

sys.dm_db_index_physical_stats ( 
    {database_id | NULL }
    , { object_id | NULL }
    , { index_id | NULL | 0 }
    , { partition_number | NULL }
    , { mode | NULL | DEFAULT }
)

SELECT DB_NAME(10)	--数据库名
--然后切换到上面查询出来的数据库下
SELECT name FROM sys.objects	--表名
WHERE OBJECT_ID = 5575058
--DETAILED:模式将扫描所有页并返回所有统计信息,速度最慢
zxy1092003 2013-08-14
  • 打赏
  • 举报
回复
现在又出现这种问题了,我觉得不像是个人行为,用profile能监控到spid,使用dbcc inputbuffer(spid)查出来的结果还是select (sum(page_count)/128.0) from sys.dm_db_index_physical_stats(10, 5575058, NULL, NULL, 'DETAILED') 并且伴随着大量的 EXEC #am_generate_waitstats; 这个也是由数据库服务器管理账号执行的
本课程根据讲师十多年在世界500强外企的生产环境中的SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程中不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境中实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境中,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业中较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验中SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL ServerSQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧