1. 首页
  2. IT资讯

关于通过DM_视图寻求优化MSSQL的方法

最近一直想寻求一种类似ORACLE中优化系统的方法,也就是通过查询某个视图或某个指标来获取系统当前存在的瓶颈,虽然,象一些书里介绍的那样可以通过性能计数器和查询可以解决某些问题,但毕竟系统内的很多因素之间是互相影响的,并不能立刻从根本上解决存在的瓶颈问题,昨天在边研究边做《Microsoft.Press.Inside.Microsoft.SQL.Server.2005.Query.Tuning.and.Optimization.Sep.2007》的笔记,这也是我一直以来想完成的一个任务,就是通过总结、归纳以往我看的有关MSSQL的资料和知识,得出一套切实可行的优化MSSQL的方法,起码要把思路搞清楚,所以最近一直在努力,可昨晚我忽然看到其中提到了sys.dm_os_wait_stats的视图,这使我忽然看到了希望,觉得MSSQL看来也模仿了ORACLE,在动态视图里也记录了当前系统的等待信息,这让我欣喜若狂,今天下午没去培训结果查了一下MSSQL2005的资料,原来MSSQL2005的袖里乾坤也不简单啊,基本具备了视图优化和查询的雏形啊,也许以前就有,只是我们没发现而已。看了几大类DM视图和函数,了解了一些基本概念,理顺了一下思路,先总结如下:
一、通过sys.dm_os_wait_stats获取系统等待信息:
1. 获取数量最多的等待:
SELECT * FROM sys.dm_os_wait_stats
where waiting_tasks_count<>0
ORDER BY waiting_tasks_count desc,wait_time_ms desc
2. 获取等待时间和最长的等待:
SELECT * FROM sys.dm_os_wait_stats
where waiting_tasks_count<>0
ORDER BY wait_time_ms desc, waiting_tasks_count desc
二、通过sys.dm_os_waiting_tasks获取信息:
1. 获取等待任务相关会话信息:
select w_tsk.session_id,w_tsk.wait_type,w_tsk.resource_description,s_txt.text from
sys.dm_os_waiting_tasks w_tsk
join
sys.dm_os_tasks a_tsk
on w_tsk.waiting_task_address=a_tsk.task_address
and w_tsk.session_id=a_tsk.session_id
join
sys.dm_exec_requests a_req
on a_tsk.session_id=a_req.session_id
and a_tsk.request_id=a_req.request_id
CROSS APPLY sys.dm_exec_sql_text(a_req.sql_handle) AS s_txt
where w_tsk.blocking_session_id is not null
2. 取获等待任务信息:
select * from sys.dm_os_waiting_tasks
where blocking_session_id is not null
order by wait_duration_ms
三、所有事件信息(因内容较多,在专门文档里给出)

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8484829/viewspace-1030727/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:深沉的少年,转转请注明出处:http://www.cxybcw.com/184816.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code