SQL技术内幕-13 SQL优化方法论之分离重量级的等待

Code

-- Isolate top waits
WITH Waits AS
(
  SELECT
    wait_type,
    wait_time_ms / 1000. AS wait_time_s,
    100. * wait_time_ms / SUM(wait_time_ms) OVER() AS pct,
    ROW_NUMBER() OVER(ORDER BY wait_time_ms DESC) AS rn,
    100. * signal_wait_time_ms / wait_time_ms as signal_pct
  FROM sys.dm_os_wait_stats
  WHERE wait_time_ms > 0
    AND wait_type NOT LIKE N‘%SLEEP%‘
    AND wait_type NOT LIKE N‘%IDLE%‘
    AND wait_type NOT LIKE N‘%QUEUE%‘
    AND wait_type NOT IN(  N‘CLR_AUTO_EVENT‘
                         , N‘REQUEST_FOR_DEADLOCK_SEARCH‘
                         , N‘SQLTRACE_BUFFER_FLUSH‘
                         /* filter out additional irrelevant waits */ )
)
SELECT
  W1.wait_type,
  CAST(W1.wait_time_s AS NUMERIC(12, 2)) AS wait_time_s,
  CAST(W1.pct AS NUMERIC(5, 2)) AS pct,
  CAST(SUM(W2.pct) AS NUMERIC(5, 2)) AS running_pct,
  CAST(W1.signal_pct AS NUMERIC(5, 2)) AS signal_pct
FROM Waits AS W1
  JOIN Waits AS W2
    ON W2.rn <= W1.rn
GROUP BY W1.rn, W1.wait_type, W1.wait_time_s, W1.pct, W1.signal_pct
HAVING SUM(W2.pct) - W1.pct < 80 -- percentage threshold
    OR W1.rn <= 5
ORDER BY W1.rn;
GO

1.从系统最后一次重启或计数器清空,该等待类型的总等待时间(以秒为单位)

2.该类型的等待时间占等待时间的百分比

3.从最重量级的等待类型到当前等待类型的连续百分比。

4.信号等待时间占等待时间的百分比,、(记住,wait_time_ms包含signal_wait_time_ms)

时间: 2024-11-05 19:00:30

SQL技术内幕-13 SQL优化方法论之分离重量级的等待的相关文章

SQL技术内幕四

数据类型: sql server只接受两种数据类型 1. 普通字符 varchar char 用一个字节表示一个字符,表示英文 2.unicode   nchar nvarchar 用两个字节表示一个字符 char nchar都是固定长度的,不论其中字符的实际长度,适用于写入为主的系统,读取效率低 varchar nvarchar 是可变长度,读取速度会快但是更新会慢

SQL技术内幕三

Select 分析一个查询实例 Select empid,year(orderdate) as orderYear,count(*) as orderCount From dbo.orderInfo where custid=71 group by empid,Year(orderdate) having count(*) >1 order by empid 以上语句在sql server内的执行顺序是 from--where--group by--having --select--order

SQL技术内幕二DDL

创建数据库: if db_id('DBTest') is nullcreate database DBTest 创建表 use eb_fy_data_test---use 切换所在数据库上下文 if object_id('UserTest','u') is not null drop TABLE UserTest CREATE TABLE UserTest {} 数据完整性 1.主键约束 alter table UserTest add constraint PK_UserTest Primar

SQL技术内幕一

范式:关系模型的规范化规则. Codd提出的三个数据库范式: 1. 第一范式 第一范式要求表中的每一行都是必须是唯一的.因为关系型数据库是基于集合论的,而集合的定义中,要求每一个元素都是唯一的(在关系数据库中可以用键来区别).因此所有的关系数据库表必然是满足第一范式的. 2.第二范式 第二范式要求必须满足第一范式,其次要求非键值属性和候选键值属性之间必须满足一定的条件.即所有非键值属性都完全依赖与整个候选键值所有属性. 如何理解名词参照http://www.cnblogs.com/lumnm/a

SQL技术内幕-13 SQL优化方法论之分析实例级别的等待

优化方法论的第一步是在实例级别上找出什么类型的等待占用了大部分的等待时间,这可以通过查询动态管理图(DMV,dynamic management view)sys.dm_os_wait_stats 运行一下查询,将返回你的系统中的等待信息,并按类型排序. SELECT wait_type , waiting_tasks_count , wait_time_ms , max_wait_time_ms , signal_wait_time_ms FROM sys.dm_os_wait_stats O

SQL Server技术内幕笔记合集

SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnblogs.com/lyhabc/articles/3914213.html Microsoft SQL Server 2005技术内幕:T-SQL查询笔记http://www.cnblogs.com/lyhabc/articles/3912608.html Microsoft SQL Server 2

基于oracle的sql优化方法论

Oracle数据库里SQL优化的终极目标就是要缩短目标SQL语句的执行时间.要达到上述目的,我们通常只有如下三种方法可以选择: 1.降低目标SQL语句的资源消耗: 2.并行执行目标SQL语句: 3.平衡系统的资源消耗. "方法1:降低目标SQL语句的资源消耗"以缩短执行时间,这是最常用的SQL优化方法.这种方法的核心是要么通过在不更改业务逻辑的情况下改写SQL来降低目标SQL语句的资源消耗,要么不改SQL但通过调整执行计划或相关表的数据来降低目标SQL语句的资源消耗. 方法2:并行执行

SQL技术内幕-8 使用WITH AS提高性能简化嵌套SQL

--本文来源:http://www.cnblogs.com/fygh/archive/2011/08/31/2160266.html 一.WITH AS的含义 WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分. 特别对于UNION ALL比较有用.因为UNION ALL的每个部分可能相同

笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-10 可编程对象

关于批处理 下列语句不能在同一批处理中和其他语句同时编译:CREATE DEFAULT.CREATE FUNCTION.CREATE PROCEDURE.CREATE RULE.CREATE SCHEMA.CREATE TRIGGER及CREATE VIEW.例如,以下代码包含一个IF语句,之后在同一批处理中跟着一个CREATE VIEW语句,SQL Server将会报错: IF OBJECT_ID('Sales.MyView', 'V') IS NOT NULL DROP VIEW Sales