關於透過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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 檢視所有VIEW/TABLE in MSSQLViewSQL
- 透過shell指令碼檢視procedure的資訊指令碼
- 透過shell指令碼檢視package的資訊指令碼Package
- mssql bcp 工具用法和檢視角色儲存過程SQL儲存過程
- 透過shell指令碼檢視鎖資訊指令碼
- ?透過系統pid檢視sqlSQL
- 關於開發檢視
- 關於MSSQL佔用過多記憶體的問題 (轉)SQL記憶體
- 透過閃回事務檢視資料dml的情況
- 透過hexdump檢視硬碟標頭檔案的區別硬碟
- Laravel 透過遷移指令碼建立MySQL檢視Laravel指令碼MySql
- 透過查詢檢視sql執行計劃SQL
- mssql sqlserver 表增加列後,檢視不會自動更新相關列的兩種解決方法分享SQLServer
- 關於oracle的jobs的兩個檢視Oracle
- 關於檢視和儲存過程的許可權問題探究儲存過程
- Windows8透過資源管理器檢視網路連線狀態的方法Windows
- 【GP】透過資料字典檢視某個表的欄位
- [iOS]關於檢視下拉選單的猜想iOS
- 關於SGA的常用動態效能檢視
- 8.1關於動態效能檢視
- 關於oracle RAC 透過udev繫結磁碟Oracledev
- MSSQL索引檢視(indexed view)之簡述及使用SQL索引IndexView
- win10搜尋檔案在哪裡 檢視搜尋檔案位置的方法Win10
- 透過shell指令碼來檢視Undo中資源消耗高的sql指令碼SQL
- Dozzle-解決透過命令方式檢視Docker 日誌的神器Docker
- 亞馬遜平臺使用API介面透過關鍵字搜尋商品亞馬遜API
- 透過作業系統的程式號檢視資料庫的session作業系統資料庫Session
- 檢視錶、檢視、索引、儲存過程和觸發器的定義的方法索引儲存過程觸發器
- 2 Day DBA-管理方案物件-關於方案物件管理許可權-管理檢視-關於檢視物件
- 關於Oracle dba_free_space 檢視的研究Oracle
- 關於檢視檔案的幾個小命令
- 關於ORACLE I/O操作的幾個檢視Oracle
- 透過SQL_ID檢視SQL歷史執行資訊SQL
- 透過v$sql_bind_capture 檢視繫結變數。SQLAPT變數
- 透過sql檢視資料庫有哪些程式在工作SQL資料庫
- 如何避免 HttpClient 丟失請求頭:透過 HttpRequestMessage 解決並最佳化HTTPclient
- Linux透過什麼命令可以檢視報文的詳細資訊?Linux
- 透過adb命令檢視HP主機的系統資訊介紹