Sẽ là một thách thức khi áp dụng chính sách đồng phục đối với một bất động sản đa dạng như vậy. Cổng gọi đầu tiên của tôi sẽ là để hiểu những người tiêu dùng lớn nhất về tài nguyên chính (CPU, bộ nhớ, IO) trên từng trường hợp, nhằm tách biệt các cơ sở dữ liệu có vấn đề với các cơ sở dữ liệu khác. Các DMV kiểm tra sức khỏe của Glenn Berrys sẽ là điểm khởi đầu tốt.
Ai đang sử dụng hầu hết bộ nhớ (vùng đệm) trên mỗi trường hợp?
SELECT DB_NAME(database_id) AS [Database Name],
COUNT(*) * 8/1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
WHERE database_id > 4 -- system databases
AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC OPTION (RECOMPILE);
Bao lâu là các trang ở trong vùng đệm?
SELECT cntr_value AS [Page Life Expectancy]
FROM sys.dm_os_performance_counters
WHERE [object_name] = N'SQLServer:Buffer Manager'
AND counter_name = N'Page life expectancy' OPTION (RECOMPILE);
Ai đang tạo ra nhiều IO nhất?
SELECT DB_NAME(DB_ID()) AS [Database Name],[file_id], num_of_reads, num_of_writes,
io_stall_read_ms, io_stall_write_ms,
CAST(100. * io_stall_read_ms/(io_stall_read_ms + io_stall_write_ms) AS DECIMAL(10,1)) AS [IO Stall Reads Pct],
CAST(100. * io_stall_write_ms/(io_stall_write_ms + io_stall_read_ms) AS DECIMAL(10,1)) AS [IO Stall Writes Pct],
(num_of_reads + num_of_writes) AS [Writes + Reads], num_of_bytes_read, num_of_bytes_written,
CAST(100. * num_of_reads/(num_of_reads + num_of_writes) AS DECIMAL(10,1)) AS [# Reads Pct],
CAST(100. * num_of_writes/(num_of_reads + num_of_writes) AS DECIMAL(10,1)) AS [# Write Pct],
CAST(100. * num_of_bytes_read/(num_of_bytes_read + num_of_bytes_written) AS DECIMAL(10,1)) AS [Read Bytes Pct],
CAST(100. * num_of_bytes_written/(num_of_bytes_read + num_of_bytes_written) AS DECIMAL(10,1)) AS [Written Bytes Pct]
FROM sys.dm_io_virtual_file_stats(DB_ID(), NULL) OPTION (RECOMPILE);
Cơ sở dữ liệu nào đang tiêu thụ nhiều CPU nhất và quy trình cụ thể nào?
SELECT
DB_NAME(qt.dbid) AS DatabaseName
, SUM(qs.total_worker_time) AS [TotalWorkerTime]
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY
sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
DB_NAME(qt.dbid) IS NOT NULL
GROUP BY
qt.dbid
ORDER BY
SUM(qs.total_worker_time) DESC
OPTION
(RECOMPILE) ;
SELECT TOP (1000)
DB_NAME(qt.dbid) AS DatabaseName
, qt.[text] AS [SP Name]
, qs.total_worker_time AS [TotalWorkerTime]
FROM
sys.dm_exec_query_stats AS qs
CROSS APPLY
sys.dm_exec_sql_text(qs.[sql_handle]) AS qt
WHERE
DB_NAME(qt.dbid) IS NOT NULL
ORDER BY
qs.total_worker_time DESC
OPTION
(RECOMPILE) ;