Sql Server CPU 性能排查及优化的相关 Sql

Sql Server CPU 性能排查及优化的相关 Sql 语句,非常好的SQL语句,记录于此:

--Begin Cpu 分析优化的相关 Sql 

--使用DMV来分析SQL Server启动以来累计使用CPU资源最多的语句。例如下面的语句就可以列出前50名。select     c.last_execution_time,c.execution_count,c.total_logical_reads,c.total_logical_writes,c.total_elapsed_time,c.last_elapsed_time,     q.[text]from     (select top 50 qs.*    from sys.dm_exec_query_stats qs    order by qs.total_worker_time desc) as c    cross apply sys.dm_exec_sql_text(plan_handle) as qorder by c.total_worker_time descgo

-- 返回最经常运行的100条语句SELECT TOP 100 cp.cacheobjtype,cp.usecounts,cp.size_in_bytes,qs.statement_start_offset,qs.statement_end_offset,qt.dbid    ,qt.objectid                        ,SUBSTRING(qt.text,qs.statement_start_offset/2,                         (case when qs.statement_end_offset = -1                         then len(convert(nvarchar(max), qt.text)) * 2                         else qs.statement_end_offset end -qs.statement_start_offset)/2)     as statement FROM sys.dm_exec_query_stats qscross apply sys.dm_exec_sql_text(qs.sql_handle) as qtinner join sys.dm_exec_cached_plans as cp on qs.plan_handle=cp.plan_handlewhere cp.plan_handle=qs.plan_handleand cp.usecounts>4ORDER BY [dbid],[Usecounts] DESC

-- 返回做IO数目最多的50条语句以及它们的执行计划select top 50     (total_logical_reads/execution_count) as avg_logical_reads,    (total_logical_writes/execution_count) as avg_logical_writes,    (total_physical_reads/execution_count) as avg_phys_reads,     Execution_count,     statement_start_offset as stmt_start_offset, statement_end_offset as stmt_end_offset,substring(sql_text.text, (statement_start_offset/2), case when (statement_end_offset -statement_start_offset)/2 <=0 then 64000else (statement_end_offset -statement_start_offset)/2 end) as exec_statement,  sql_text.text,plan_text.*from sys.dm_exec_query_stats  cross apply sys.dm_exec_sql_text(sql_handle) as sql_textcross apply sys.dm_exec_query_plan(plan_handle) as plan_textorder by  (total_logical_reads + total_logical_writes) /Execution_count Desc

-- 计算signal wait占整wait时间的百分比-- 指令等待 CPU 资源的时间占总时间的百分比。如果超过 25% ,说明 CPU 紧张select convert(numeric(5,4),sum(signal_wait_time_ms)/sum(wait_time_ms)) from Sys.dm_os_wait_stats 

-- 计算'Cxpacket'占整wait时间的百分比-- Cxpacket:Sql Server 在处理一句代价很大的语句,要不就是没有合适的索引或筛选条件没能筛选足够的记录,使得语句要返回大量的结果,当 >5% 说明有问题declare @Cxpacket bigintdeclare @Sumwaits bigintselect @Cxpacket = wait_time_msfrom Sys.dm_os_wait_statswhere wait_type = 'Cxpacket'select @Sumwaits = sum(wait_time_ms)from Sys.dm_os_wait_statsselect convert(numeric(5,4),@Cxpacket/@Sumwaits)

-- 查询当前数据库上所有用户表格在Row lock上发生阻塞的频率declare @dbid intselect @dbid = db_id()Select dbid=database_id, objectname=object_name(s.object_id), indexname=i.name, i.index_id    --, partition_number, row_lock_count, row_lock_wait_count, [block %]=cast (100.0 * row_lock_wait_count / (1 + row_lock_count) as numeric(15,2)), row_lock_wait_in_ms, [avg row lock waits in ms]=cast (1.0 * row_lock_wait_in_ms / (1 + row_lock_wait_count) as numeric(15,2))from sys.dm_db_index_operational_stats (@dbid, NULL, NULL, NULL) s,     sys.indexes iwhere objectproperty(s.object_id,'IsUserTable') = 1and i.object_id = s.object_idand i.index_id = s.index_idorder by row_lock_wait_count desc

--End Cpu 分析优化的相关 Sql 

相关文章:

Sql Server Cpu 100% 的常见原因及优化

Sql Server 索引使用情况及优化的相关 Sql

时间: 2024-10-01 07:58:07

Sql Server CPU 性能排查及优化的相关 Sql的相关文章

Sql Server 索引使用情况及优化的相关Sql语句分享_MsSql

复制代码 代码如下: --Begin Index(索引) 分析优化的相关 Sql -- 返回当前数据库所有碎片率大于25%的索引 -- 运行本语句会扫描很多数据页面 -- 避免在系统负载比较高时运行 -- 避免在系统负载比较高时运行 declare @dbid int select @dbid = db_id() SELECT o.name as tablename,s.* FROM sys.dm_db_index_physical_stats (@dbid, NULL, NULL, NULL,

Sql Server 索引使用情况及优化的相关Sql语句分享

复制代码 代码如下: --Begin Index(索引) 分析优化的相关 Sql -- 返回当前数据库所有碎片率大于25%的索引 -- 运行本语句会扫描很多数据页面 -- 避免在系统负载比较高时运行 -- 避免在系统负载比较高时运行 declare @dbid int select @dbid = db_id() SELECT o.name as tablename,s.* FROM sys.dm_db_index_physical_stats (@dbid, NULL, NULL, NULL,

SQL Server 2008性能故障排查(二)——CPU

原文:SQL Server 2008性能故障排查(二)--CPU 承接上一篇:SQL Server 2008性能故障排查(一)--概论 说明一下,CSDN的博客编辑非常不人性化,我在word里面都排好了版,贴上来就乱得不成样了.建议CSDN改进这部分.也请大家关注内容不要关注排版.同时在翻译的过程中本人也整理了一次思路,所以还似乎非常愿意翻译,虽然有点自娱自乐,但是分享给大家也是件好事 CPU 瓶颈:CPU瓶颈可能因为某个负载所需的硬件资源不足而引起.但是过多的CPU使用通常可以通过查询优化(特

SQL Server 2008性能故障排查(三)——I/O

原文:SQL Server 2008性能故障排查(三)--I/O 接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓存池中搬进搬出,这会引起大量的I/O传输.同样地,日志记录在事务被声明为已提交前必须写入磁盘.最后,SQLServer基于许多原因使用tempdb,比如存储临时结果.排序和保持行版本.所以一个好的I/O子系统是SQLServer性能关

SQL Server 2008性能故障排查(一)——概论

原文:SQL Server 2008性能故障排查(一)--概论 备注:本人花了大量下班时间翻译,绝无抄袭,允许转载,但请注明出处.由于篇幅长,无法一篇博文全部说完,同时也没那么快全部翻译完,所以按章节发布.由于本人水平有限,翻译结果肯定存在问题,为了不造成误导,在每篇结尾处都附上原文,供大家参考,也希望能指出我的问题,以便改进.谢谢. 另外,本文写给稍微有经验的数据库开发人员或者DBA看,初学者可能会看不懂.在此请见谅 作者:Sunil Agarwal, Boris Baryshnikov, K

SQL Server 2008性能故障排查(四)——TempDB

原文:SQL Server 2008性能故障排查(四)--TempDB 接着上一章:I/O TempDB:          TempDB是一个全局数据库,存储内部和用户对象还有零食表.对象.在SQLServer操作过程中产生的存储过程等数据.在一个SQLServer实例中,只有一个TempDB.所以容易成为性能和磁盘空间瓶颈.TempDB可能因为空间可用程度和过量的DDL和DML操作而变得超负荷.这可能导致不相关的应用运行缓慢甚至失败.          常见的TempDB问题如下: l  T

专家教你优化你的SQL Server硬件性能

优化SQL Server硬件性能 对SQL Server的性能调整有很多种方式,就像建造一所房子.你必须找到一个合适的地点,拥有肥沃的土壤.构建一个结实的地基,支持2到3层的小楼,安装电气和插座,对墙壁刷油漆并进行装饰,最后进行不断的维护. 调整SQL Server的性能也具有类似的项目,其中包括: 硬件 Windows服务器 SQL Server 数据库设计 索引设计 T-SQL 开发 网络基础设施 前端代码 平台维护 虽然在获得高性能方面,没有哪个单个的组件比其他的具有更大的重要性,但是要争

SQL Server数据库性能优化

设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事.在开发工具.数据库设计.应用程序的结构.查询设计.接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能.本文以SQL Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议. 1 数据库设计 要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案.在实际工作中,许多SQL Server方案往往是由于数据库设计得不好导致性能很差.所以,要实

SQL Server数据库性能优化技术第1/2页_数据库其它

设计1个应用系统似乎并不难,但是要想使系统达到最优化的性能并不是一件容易的事.在开发工具.数据库设计.应  用程序的结构.查询设计.接口选择等方面有多种选择,这取决于特定的应用需求以及开发队伍的技能.本文以SQL  Server为例,从后台数据库的角度讨论应用程序性能优化技巧,并且给出了一些有益的建议.  1 数据库设计  要在良好的SQL Server方案中实现最优的性能,最关键的是要有1个很好的数据库设计方案.在实际工作中,许多SQL  Server方案往往是由于数据库设计得不好导致性能很差