Tôi đã nhận thấy những gì tôi nghĩ là vấn đề bất thường với bộ đệm của kế hoạch truy vấn của chúng tôi, trong đó các kế hoạch trong bộ đệm không bao giờ quá một ngày.
Thông qua việc chạy truy vấn sau (lịch sự của Kimberly Tripp ), nó cho thấy phần lớn các gói (4,5Gb của 6Gb được lưu trong bộ nhớ cache hoặc 44813 trong số ~ 50000), là các truy vấn Ad-hoc có số lượng sử dụng là 1.
SELECT objtype AS [CacheType]
, count_big(*) AS [Total Plans]
, sum(cast(size_in_bytes as decimal(18,2)))/1024/1024 AS [Total MBs]
, avg(usecounts) AS [Avg Use Count]
, sum(cast((CASE WHEN usecounts = 1 THEN size_in_bytes ELSE 0 END) as decimal(18,2)))/1024/1024 AS [Total MBs - USE Count 1]
, sum(CASE WHEN usecounts = 1 THEN 1 ELSE 0 END) AS [Total Plans - USE Count 1]
FROM sys.dm_exec_cached_plans
GROUP BY objtype
ORDER BY [Total MBs - USE Count 1] DESC
Tôi đã xác định truy vấn vấn đề (động, với một EXEC
, tất nhiên ...), khá khó chịu, nhưng cũng phức tạp khi chỉ là 'sửa chữa', vì vậy tôi đang xem xét các cải tiến ngay lập tức có thể được thực hiện.
Ví dụ đã được đặt để sử dụng Tối ưu hóa cho khối lượng công việc đặc biệt, tuy nhiên, CacheObjType
từ sys.dm_exec_cached_plans
tất cả đều là Kế hoạch được biên dịch thay vì Sơ đồ tổng hợp .
Khi sử dụng chế độ Khối lượng công việc đặc biệt, các gói có nên không được sơ khai Kế hoạch cho đến khi chúng usecounts
lớn hơn 1 không? Hoặc đó không phải là cách làm việc này?
Ngoài ra còn có một refcounts
lĩnh vực mà dường như không ai đề cập đến khi nói về các truy vấn Adhoc. Số tiền hoàn trả luôn là 1 khi loại là Sơ đồ tổng hợp và 2 khi loại là Gói tổng hợp . Ngay cả khi đọc BOL , tôi cũng không hoàn toàn chắc chắn lĩnh vực này có ý nghĩa gì. Ai đó có thể làm rõ?