sql-server - SQL Server 中的大型 USERSTORE_OBJPERM
问题描述
我试图让我们的 SQL Server 运行得更快,并且注意到没有存储过程在计划缓存中停留任何时间长度。大多数计划都是在最后一个小时左右创建的。
运行下面的脚本,我看到 USERSTORE_OBJPERM 大约为 3GB,是服务器上仅次于 SQL BUFFERPOOL 的第二大内存缓存。
选择前 100 个 * FROM sys.dm_os_memory_clerks 其中 type = 'USERSTORE_OBJPERM'
我已经在我们的其他一些生产服务器上运行了相同的脚本,其他服务器上的 USERSTORE_OBJPERM 都没有接近 200MB 左右那么大。
我的问题是有没有人看到大约 3GB 的 USERSTORE_OBJPERM 以及可能导致它的原因。
我运行以下命令尝试清除缓存,它下降了 100mb 左右,然后又立即开始上升。DBCC FREESYSTEMCACHE ('ObjPerm - DatabaseName')
SQL Server 版本是应用了 CU22 的 2017 Enterprise。
非常感谢您提供的任何提示或建议 Cheers Mat
解决方案
固定的。
看来问题是由使用服务代理的应用程序引起的。
该应用程序正在运行一个脚本以每 30 秒检查一次权限。
幸运的是,有一个选项可以关闭权限检查。
USERSTORE_OBJPERM 缓存大小现在是 200MB,而不是 3GB,并且存储过程计划保留在缓存中。
推荐阅读
- javascript - 自定义 javascript 检查是否需要字段
- javascript - React-native android appstate问题
- kubernetes - 从 Service 访问 pod localhost
- mongodb - 如何使用 PM2 运行 MongoDB
- javascript - 通过数组中的对象属性获取前三个对象
- c++ - 从 iDS 流式传输到 OpenCV
- java - android 仪器测试中的模拟包管理器
- java - 在surefire和failsafe中使用启用的预览功能运行测试时出现问题
- angular - 角度 6 HttpClient
- c++ - 如何调试 boost_iarchive?