六、CPU優化(6)DMV與計數器
一、CPU相關的DMV
1. 檢視使用CPU最多的前50名
select highest_cpu_queries.*, q.dbid, q.objectid, q.number, q.encrypted, q.[text] from ( select top 50 qs.* from sys.dm_exec_query_stats qs order by qs.total_worker_time desc ) as highest_cpu_queries cross apply sys.dm_exec_sql_text(plan_handle) as q order by highest_cpu_queries.total_worker_time desc |
2. 檢視最頻繁重編譯的前20個儲存過程
select top 20 sql_text.text, sql_handle, plan_generation_num, execution_count, dbid, objectid from sys.dm_exec_query_stats a cross apply sys.dm_exec_sql_text(sql_handle) as sql_text where plan_generation_num > 1 order by plan_generation_num desc |
3. 計算signal wait佔整wait時間的百分比
select CONVERT(numeric(5,4),sum(signal_wait_time_ms)/sum(wait_time_ms)) from sys.dm_os_wait_stats |
該值描述了指令等待CPU資源的時間佔總時間的百分比。如果超過25%,說明CPU資源緊張。
4. 並行執行的Cxpacket等待狀態
declare @Cxpacket bigint declare @Sumwaits bigint select @Cxpacket = wait_time_ms from sys.dm_os_wait_stats where wait_type = 'Cxpacket' select @Sumwaits = SUM(wait_time_ms) from sys.dm_os_wait_stats select CONVERT(numeric(5,4),@Cxpacket/@Sumwaits) |
並行執行意味著SQL Server查詢引擎估算某一句語句執行的代價將會超過成本代價,或者沒有合適的索引,或者篩選條件沒能夠篩選掉足夠的記錄,使得語句要返回大量的結果。為了提升OLTP系統的效能,這些都是儘量避免的。
二、CPU相關的效能計數器
1. 檢查整個伺服器的CPU使用情況
Processor: % Processor Time
Processor: % Privileged Time (Kernel Mode)
Processor: % User Time (User Mode)
System: Processor Queue length
Context switches/sec
2. 檢查每個程式的CPU使用情況
Processor: % Processor Time
Processor: % Privileged Time
Processor: % User Time
3. 估算執行計劃重用率
關注SQLServer:SQL Statistics的計數器,大致估算出執行計劃重用率。對於OLTP系統的核心語句,必須有大於95%的執行計劃重用率。
Initial Compilations = SQL Compilations/sec - SQL Re-Comilations/sec
執行計劃重用率 = (Batch requests/sec - Initial Compilations/sec) / Batch requests/sec
本文結語:
通過監視計數器,或者使用DMV,檢視CPU的效能。
相關文章
- Nginx實戰(六) 引數優化Nginx優化
- 程式分析與優化 - 6 迴圈優化優化
- win10最大優化cpu設定_win10如何優化cpuWin10優化
- 【SQL優化器】初始化引數SQL優化
- [玩轉MySQL之六]MySQL查詢優化器MySql優化
- MySQL設計與優化MySql優化
- Oracle優化器(RBO與CBO)Oracle優化
- Linux CPU 效能優化指南Linux優化
- Laravel 數量統計優化Laravel優化
- 透過DMV查詢CPU時間最長的語句和查詢計劃
- 伺服器CPU比家用CPU更有哪些優勢伺服器
- (6)從計數器到可控線性序列機——led實驗六部曲
- MySQL 配置InnoDB配置非持久優化器統計資訊引數MySql優化
- mysql cpu 100% 滿 優化方案MySql優化
- MySQL案例05:CPU負載優化MySql負載優化
- 杭電計算機組成實驗6(六)MIPS彙編器與模擬器實驗計算機
- 伺服器做了兩個優化 CPU 使用率減低 40%伺服器優化
- 六、常量與變數變數
- 使用預計算分割槽優化引數化優化
- TiDB與MySQL優化器對照TiDBMySql優化
- 最最佳化與計數
- 優化器優化
- 查詢優化與併發控制[姊妹篇.第六彈]優化
- 檢視伺服器CPU的個數、CPU的核數、多核超執行緒數伺服器執行緒
- 【iCore3 雙核心板_FPGA】例程六:計數器實驗——計數器使用FPGA
- Linux雲端計算架構-系統調優【CPU、IO、網路、核心引數調優】Linux架構
- SQL優化之六脈神劍SQL優化
- 程式分析與優化 - 8 暫存器分配優化
- 瀏覽器渲染過程與效能優化瀏覽器優化
- MySQL查詢優化之優化器工作流程以及優化的執行計劃生成MySql優化
- Linux 效能優化之 CPU 篇 ----- 套路篇Linux優化
- MySQl 配置InnoDB持久化的優化器統計資訊MySql持久化優化
- COUNT(*)計算行數有哪些優化手段優化
- java優化程式設計-靜態變數Java優化程式設計變數
- Oracle控制優化器偏好--optimizer_mode引數Oracle優化
- Oracle查詢優化器的相關引數Oracle優化
- TensorFlow筆記(5)——優化手寫數字識別模型之優化器筆記優化模型
- 搶購倒數計時自定義控制元件的實現與優化控制元件優化