SqlServer性能瓶頸分析
一、內存瓶頸分析--SQLServer:Buffer Manager
SELECT TOP 312 * FROM sys.dm_os_performance_counters
where object_name ='SQLServer:Buffer Manager' order by counter_name
1.Buffer cache hit ratio 平均值>=90%
緩沖區是創建數據頁面的緩沖頁面池,這一般是SQL server內存池中最大的部分。這個計數器應該盡可能高。
低值表示只有少數的請求是在緩沖區,其他請求是在磁盤獲取服務
這種情況發生可能是SQL server還在准備狀態下,或緩沖區的增長需求超過最大可用內存,因此如果此值比較低,應該考慮為系統增加內存。
2.Checkpoint pages/sec 平均值<30
美好一個檢查點操作移到磁盤的頁面數量,這些值應該相當低,高值意味着緩沖中更多的頁面被標記為臟頁面。
臟頁面是在緩沖區中被修改的頁面。一旦被修改,就標記為臟並在下一個檢查點被寫回磁盤。
如果這個計數器較高說明系統發生大量的寫入操作,可能是I/O問題的征兆。
3.Lazy writes/sec 平均值<20
記錄了緩沖區管理器的Lazy write進程每秒寫入的緩沖區數量。這個進程會把時間較長的臟頁面從緩沖區中刪除,將內存釋放
數值過高說明I/O有問題或是內存問題。
4.Page life expectancy 平均值>300
頁面平均壽命,表示一個不被引用的頁面在緩沖池中停留的時間。數值低意味着頁面從緩沖區中被移走
降低了緩沖的效率並指出內存壓力的可能。
SELECT TOP 312 * FROM sys.dm_os_performance_counters
where object_name ='SQLServer:Memory Manager' order by counter_name
1.Memory Grants Pending 平均值=0
值高說明內存短缺,需要將進度掛起等待內存空閑
2. Target Server Memory(KB) 接近物理內存大小
表示SQLServer希望消耗的動態內存總數。
3.Total Server Memory (KB ) 接近於Target Server Memory
當前分配給SQLerver的總內存。 如果低於Target Server Memory
那么可能是SQLserver內存需求很低,服務器最大內存設置的太低
二、磁盤瓶頸分析 Physical Disk
%disk time 磁盤時間百分比 平均值<85%
CurrentDiskQueueLength 當前磁盤隊列長度 平均值<2
disk Transfers/sec 每秒磁盤傳輸數量 平均值<100
Disk Bytes/sec 每秒傳輸字節數 平均值<每秒10MB(該值需通過磁盤性能測試評估,不同磁盤指標不同)
avg.disk sec/read(write) 每次磁盤讀寫所需平均時間 平均值<10毫秒
三、cpu processor
%process Time 處理器時間百分比 平均值<80%
%privileged time 特權時間百分比 平均值<10%
windows server 包括用戶模式和特權模式兩種 %privileged time為20%-25%表明系統正在進行大量的IO操作,一個專用的SQLserver系統%privileged time不能超過10%
sqlserver:SQL Statistics Batch Requests/sec 每秒接收到的sql命令批數 根據機器配置 一般1000為繁忙,超過1000應注意
SQL Compilations/sec sql編譯次數 <100
SQL Reompilations/sec sql重編譯次數
四 網絡
Network interface bytes Total/sec 每秒總傳輸字節數 平均值<NIC容量的50%
NetworkSegment %net utilization 網絡利用率 平均值<80%