伺服器組態:存取檢查快取
適用於:SQL Server
當資料庫物件是由 SQL Server 所存取時,存取檢查會在稱為 access check result cache 的內部結構中進行快取。 在具有高速特定查詢執行的 SQL Server 執行個體上,您可能會注意到 sys.dm_os_memory_cache_entries
檢視中有許多具有 65535 類別的存取檢查權杖項目。 具有 65535 類別的存取檢查權杖項目代表特殊快取項目。 這些快取項目可用於查詢的累積權限檢查。
例如,您可以執行下列查詢:
SELECT *
FROM t1
INNER JOIN t2
INNER JOIN t3;
在此情況下,SQL Server 會計算此查詢的累積權限檢查。 此檢查會判斷使用者是否有 t1
、t2
和 t3
的 SELECT 權限。 這些累積權限檢查結果會內嵌於存取檢查權杖項目,並插入識別碼為 65535 的存取檢查快取存放區。 如果同一位使用者重複使用或執行此查詢多次,SQL Server 會重複使用存取檢查權杖快取項目一次。
若要最佳化此快取的使用,您應該考慮使用各種查詢參數化技術,或將頻繁的查詢模式轉換成使用預存程序。
access check cache bucket count
選項可控制用於存取檢查結果快取的雜湊貯體數目。
access check cache quota
選項可控制儲存在存取檢查結果快取中的項目數。 達到最大項目數時,會從存取檢查結果快取中移除最舊的項目。
備註
預設值 0
表示 SQL Server 正在管理這些選項。 預設值會轉譯為下列內部組態。
僅限 SQL Server 2016 (13.x) 及更新版本
組態設定 | 伺服器架構 | 預設項目數 |
---|---|---|
access check cache quota |
x64 | 1,024 |
access check cache bucket count |
x64 | 256 |
SQL Server 2008 (10.x) 到 SQL Server 2014 (12.x)
組態設定 | 伺服器架構 | 預設項目數 |
---|---|---|
access check cache quota |
x86 | 1,024 |
x64 和 IA-64 | 28,192,048 | |
access check cache bucket count |
x86 | 256 |
x64 和 IA-64 | 2,048 |
在罕見的情況下,效能或許可以透過變更這些選項的方式來提升。 例如,如果使用太多記憶體,您可能想要減少 access check result cache 的大小。 或者,如果在重新計算權限時出現高 CPU 使用率,請增加 access check result cache 的大小。
建議只在 Microsoft 客戶支援服務引導下變更這些選項。 如果您想要變更 access check cache bucket count
和 access check cache quota
值,請使用 1:4 的比。 例如,如果您將 access check cache bucket count
值變更為 512
,則應該將 access check cache quota
值變更為 2048
。