MSSQL Sever 效能,磁碟等監控建立(二) 伺服器側記憶體使用量,CPU壓力查詢
阿新 • • 發佈:2019-01-28
這裡簡單查詢了資料庫伺服器當前記憶體使用情況以及CPU等待百分比情況. 雖然signal (cpu) waits 對於分析CPU壓力來說不是絕對唯一的引數.但是也是一個不錯的參考值. 歡迎有類似需求的朋友指正討論
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE ID = OBJECT_ID('Tempdb..#Temp1_table')) DROP TABLE #Temp1_table GO IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE ID = OBJECT_ID('Tempdb..Temp_Memory_cpu_info')) DROP TABLE Tempdb..Temp_Memory_cpu_info GO SELECT @@SERVERNAME AS [ServerName], CONVERT(FLOAT,ROUND(total_physical_memory_kb/1048576.0,1),2) AS [TotalSize(GB)], CONVERT(FLOAT,ROUND(available_physical_memory_kb/1048576.0,2)) AS [FREESize(GB)], 100- CONVERT(FLOAT,ROUND((available_physical_memory_kb/1048576.0)/(total_physical_memory_kb/1048576.0)*100,2)) as [USAGE(%)], GETDATE() as CheckTime INTO #Temp1_table FROM sys.dm_os_sys_memory select D.ServerName,D.[TotalSize(GB)],D.[FREESize(GB)],D.[USAGE(%)],D.signal_wait_time_ms,D.[%signal (cpu) waits],D.resource_wait_time_ms, D.[%resource waits],D.CheckTime into Tempdb..Temp_Memory_cpu_info from ( select T.ServerName,T.[TotalSize(GB)],T.[FREESize(GB)],T.[USAGE(%)],C.signal_wait_time_ms,C.[%signal (cpu) waits], C.resource_wait_time_ms,C.[%resource waits],C.CheckTime from #Temp1_table as T left join ( SELECT @@SERVERNAME AS [ServerName], SUM(signal_wait_time_ms) AS 'signal_wait_time_ms', CAST(100.0 * SUM(signal_wait_time_ms)/SUM (wait_time_ms)AS NUMERIC(20,2)) AS '%signal (cpu) waits', SUM(wait_time_ms - signal_wait_time_ms) AS 'resource_wait_time_ms', CAST(100.0 * SUM(wait_time_ms - signal_wait_time_ms) /SUM (wait_time_ms) AS NUMERIC(20,2)) AS '%resource waits', GETDATE() as CheckTime FROM sys.dm_os_wait_stats) as C on T.ServerName = C.ServerName) as D GO select * from Tempdb..Temp_Memory_cpu_info
DROP TABLE #Temp1_table
DROP TABLE Tempdb..Temp_Memory_cpu_info
GO