阿里雲RDS(SQL SERVER使用者控制檯監控資訊詳解)

風靈使發表於2018-05-14

一. 工具

Microsoft SQL Server 2008R2 提供了一些工具來監控資料庫。方法之一是動態管理檢視。動態管理檢視 (DMV)返回的伺服器狀態資訊可用於監控伺服器例項的執行狀況、診斷問題和優化效能。

常規伺服器動態管理物件包括:

dm_db_*:資料庫和資料庫物件

dm_exec_*:執行使用者程式碼和關聯的連線

dm_os_*:記憶體、鎖定和時間安排

dm_tran_*:事務和隔離

dm_io_*:網路和磁碟的輸入/輸出

二. Metrics

使用者控制檯所看到的metrics

磁碟空間

命令: 總空間 = 資料空間 + 日誌空間 + 其它檔案空間(temp)

解釋: 頁面顯示了磁碟空間的使用量單位是GB

IOPS

命令: iopsflt.exe(自主開發)

解釋: IOPS (Input/Output Operations Per Second),即每秒進行讀寫(I/O)操作的次數

CPU使用率

命令:利用程式pid獲得此程式的cpu使用率,再用獲得的cpu使用率比上使用者申請的得到一個百分比

解釋: IOPS (Input/Output Operations Per Second),即每秒進行讀寫(I/O)操作的次數

連線數

命令

    select count(*) from sys.dm_exec_sessions   
    where is_user_process=1  
    and login_name not in ('***')  
    and login_name not like '***'  
    and status not in ( 'Preconnect','Dormant')  

解釋

sys.dm_exec_sessions 是伺服器範圍的檢視,顯示了有關所有活動使用者連線和內部任務的資訊。

login_name 當前執行的會話所使用的 SQL Server 登入名。

is_user_process 用於判斷是否是系統連線。

status 會話的狀態。 可能的值:

Running - 當前正在執行一個或多個請求

Sleeping - 當前沒有執行任何請求

Dormant – 會話因連線池而被重置,並且現在處於登入前狀態。

Preconnect - 會話在資源調控器分類器中。

分類資源調控器支援對傳入會話的分類。分類基於函式中包含的一組使用者編寫的條件。

函式邏輯的結果使資源調控器可以將會話歸入現有工作負荷組類。

會話傳入連結——分類(分類器函式)——路由到工作負荷組——工作負荷組使用相關聯的資源池——資源池提供同時限制應用程式資源

網路流量

命令

SELECT round(SUM(net_packet_size * 1.0 * num_reads / 1024), 0) AS read_kb, round(SUM(net_packet_size * 1.0 * num_writes / 1024), 0) AS write_kb   
FROM sys.dm_exec_connections   
    WHERE session_id IN (  
    SELECT session_id  
    FROM sys.dm_exec_sessions  
    WHERE is_user_process = 1  
)  

理解

dm_exec_connections 返回與 SQL Server 例項建立的連線有關的資訊以及每個連線的詳細資訊。

net_packet_size 用於資訊和資料的網路包的大小。可為 Null 值。

num_reads 此連線中已發生的讀包次數。可為 Null 值。

num_writes 此連線中已發生的寫資料包次數。可為 Null 值。

session_id 標識與此連線關聯的會話。可為 Null 值。

is_user_process 用於判斷是否是系統連線。

TPS

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name LIKEMSSQL$MS3001:database%%’   
    AND instance_name = ‘_Total’   
    AND counter_name LIKE ‘Transactions/sec%%

理解

Database 物件提供了計數器,來監視大容量複製操作、備份和還原吞吐量以及事務日誌活動。

_Total 有的計數器的instance_name中有值為_Total的例項,它是對該計數器所有例項的聚合值(SUM)。

Transactions/sec 每秒為資料庫啟動的事務數

QPS

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = ‘MSSQL$MS3001:SQL Statistics’   
    AND counter_name = ‘Batch Requests/sec’  

理解

SQL Statistics 物件提供計數器來監視編譯和傳送到 SQL Server例項的請求型別。通過監視查詢編譯和重新編譯的次數以及 SQL Server 例項收到的批數,可瞭解 SQL Server 處理使用者查詢的速度,以及查詢 優化器處理查詢的效率。

Batch Requests/sec 每秒收到的 Transact-SQL 命令批數。

快取命中率

命令

SELECT a.cntr_value * 1.0 / b.cntr_value * 100.0 AS BufferCacheHitRatio   
    FROM sys.dm_os_performance_counters a   
    JOIN (SELECT cntr_value, OBJECT_NAME   
    FROM sys.dm_os_performance_counters   
    WHERE counter_name = 'Buffer cache hit ratio base'   
    AND OBJECT_NAME = 'MSSQL$MS3001:Buffer Manager'  
    ) b ON a.OBJECT_NAME = b.OBJECT_NAME   
WHERE a.counter_name = 'Buffer cache hit ratio'   
AND a.OBJECT_NAME = 'MSSQL$MS3001:Buffer Manager'  

理解

sys.dm_os_performance_counters 為伺服器維護的每個效能計數器返回一行。

counter_name 計數器的名稱

OBJECT_NAME 計數器的所屬類別

Buffer Manager 物件提供了計數器,用於監視 SQL Server 如何使用:記憶體儲存資料頁、內部資料結構和過程快取; 計數器監視 SQL Server 讀取和寫入資料庫頁時的物理 I/O。

Buffer Manager中的Buffer cache hit ratio base和Buffer cache hit ratio

Buffer cache hit ratio 官方解釋在緩衝區快取記憶體中找到而不需要從磁碟中讀取的頁的百分比。

平均每秒全表掃描數

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Access Methods'  
    AND counter_name = 'Full Scans/sec'  

理解

Access Methods 物件提供用於監視如何訪問資料庫中的邏輯資料的計數器。

Full Scans/sec 每秒不受限制的完全掃描數。這些掃描可以是基表掃描,也可以是全文索引掃描。

每秒SQL編譯

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:SQL Statistics'  
    AND counter_name = 'SQL Compilations/sec'  

理解
每秒的 SQL 編譯數。 表示編譯程式碼路徑被進入的次數。 包括 SQL Server 中語句級重新編譯導致的編譯。 當 SQL Server 使用者活動穩定後,該值將達到穩定狀態。

每秒檢查點寫入Page數

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Buffer Manager'   
    AND counter_name = 'Checkpoint pages/sec'  

理解

由要求重新整理所有髒頁的檢查點或其他操作每秒重新整理到磁碟的頁數。

每秒登陸次數

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:General Statistics'  
    AND counter_name = 'Logins/sec'  

理解

General Statistics 物件提供計數器,用於監視伺服器範圍內的常規活動

Logins/sec 每秒啟動的登入數。 這不包括已入池連線。

每秒鎖超時

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'   
    AND counter_name = 'Lock Timeouts/sec'  
    AND instance_name = '_Total'  

理解

Locks 物件提供了有關各種資源型別的 SQL Server 鎖的資訊

Lock Timeouts/sec 每秒超時的鎖請求數,包括對 NOWAIT 鎖的請求。

每秒死鎖

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'  
    AND counter_name = 'Number of Deadlocks/sec'  
    AND instance_name = '_Total'  

理解

Number of Deadlocks/sec 每秒導致死鎖的鎖請求數。

每秒鎖等待

命令

    SELECT cntr_value   
    FROM sys.dm_os_performance_counters   
    WHERE object_name = 'MSSQL$MS3001:Locks'  
    AND counter_name = 'Lock Waits/sec'  
    AND instance_name = '_Total'  

解釋

Lock Waits/sec 每秒要求呼叫者等待的鎖請求數。

相關文章