“访问检查缓存”服务器配置选项
适用于:SQL Server
通过 SQL Server访问数据库对象时,访问检查缓存在一个名为 访问检查结果缓存的内部结构中。 在可高速执行临时查询的 SQL Server 实例上,你可能会注意到 sys.dm_os_memory_cache_entries
视图中有许多类为 65535 的访问检查令牌条目。 类为 65535 的访问检查令牌条目表示特殊缓存条目。 这些缓存条目用于查询的累积权限检查。
例如,可以运行下列查询:select * from t1 join t2 join t3
。 在这种情况下,SQL Server 计算此查询的累积权限检查。 此检查确定用户是否具有对 t1
、t2
和 t3
的 SELECT 权限。 这些累积权限检查结果嵌入到访问检查令牌条目中,并插入 ID 为 65535 的访问检查缓存存储中。 如果同一用户多次重复使用或执行此查询,SQL Server 会重复使用访问检查令牌缓存条目一次。
若要优化此缓存的使用,应考虑使用各种查询参数化技术,或者将频繁的查询模式转换为使用存储过程。
“访问检查缓存桶计数”选项控制用于访问检查结果缓存的哈希桶的数目。
“访问检查缓存配额”选项控制访问检查结果缓存中存储的条目数。 如果达到最大条目数,则从访问检查结果缓存中删除最早的条目。
注解
默认值 0
表示 SQL Server 正在管理这些选项。 默认值转换为以下内部配置。
SQL Server 2016 (13.x) 及更高版本
服务器体系结构 | 默认条目数 | |
---|---|---|
访问检查缓存配额 | X64 | 1,024 |
访问检查缓存桶计数 | X64 | 256 |
SQL Server 2008 (10.0.x) 到 SQL Server 2014 (12.x)
服务器体系结构 | 默认条目数 | |
---|---|---|
访问检查缓存配额 | x86 | 1,024 |
x64 和 IA-64 | 28,192,048 | |
访问检查缓存桶计数 | x86 | 256 |
x64 和 IA-64 | 2,048 |
在极少数情况下,可以通过更改这些选项来提高性能。 例如,如果使用了太多内存,则可能希望减小访问检查结果缓存的大小。 或者,如果在重新计算权限时 CPU 使用率较高,则增加访问检查结果缓存的大小。
建议仅在有 Microsoft 客户支持服务部门提供指导的情况下才更改这些选项。 如果想要更改“访问检查缓存桶计数”和“访问检查缓存配额”的值,请使用 1:4 的比率。 例如,如果将“访问检查缓存桶计数”的值更改为 512
,则应将“访问检查缓存配额”的值更改为 2048
。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈