SQL点滴13—收集SQLServer线程等待信息
来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 09:53 点击:次
要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信息是进行数据库优化的依据。
sys.dm_os_wait_stats
这是一个系统视图,里面存储线程所遇到的所有的等待信息,具体的列如下表
列名 |
数据类型 |
说明 |
Wait_type |
Nvarchar(60) |
等待类型名称 |
waiting_tasks_count |
Bigint |
等待类型的等待数。该计数器在每开始一个等待时便会增加。 |
Wait_time_ms |
Bigint |
该等待类型的总等待时间。 |
Max_wait_time_ms |
Bigint |
该等待类型的最长等待时间。 |
Signal_wait_time_ms |
Bigint |
正在等待的线程从收到信号通知到开始运行之间的时差。 |
要注意的是,这个视图的信息每次关闭SQL Server的时候都会自动清除,下次打开SQL Server的时候又会重新开始统计。
新建线程等待信息表
如果想得到连续的信息,在固定时间间隔内收集信息比如一个小时一次,这样就可以分析系统分配的等待时间,识别出繁忙时间段。这里我们将这些信息收集到一个数据表中保存并进行分析。使用下面的语句新建一个表:
use AdventureWorks
CREATE TABLE dbo.WaitStats
(
dt DATETIME NOT NULL DEFAULT (CURRENT_TIMESTAMP),
wait_type NVARCHAR(60) NOT NULL,
waiting_tasks_count BIGINT NOT NULL,
wait_time_ms BIGINT NOT NULL,
max_wait_time_ms BIGINT NOT NULL,
signal_wait_time_ms BIGINT NOT NULL
);
CREATE相关新闻>>
最新推荐更多>>>
- 发表评论
- 最新评论 更多>>