我们每周和每月运行一次维护窗口。我们的一些维护窗口是在线的,我们最不想要的就是我们的脚本阻止来自我们应用程序的实时查询。
有没有办法设置查询的优先级,使其不会导致其他查询阻塞超过 X 秒?
例子:
我知道死锁有类似的功能(将死锁受害者设置为低)。
谢谢!
我们每周和每月运行一次维护窗口。我们的一些维护窗口是在线的,我们最不想要的就是我们的脚本阻止来自我们应用程序的实时查询。
有没有办法设置查询的优先级,使其不会导致其他查询阻塞超过 X 秒?
例子:
我知道死锁有类似的功能(将死锁受害者设置为低)。
谢谢!
Microsoft 在 SQL Server 2014 中为索引重建引入了新的低优先级锁定等待选项。不确定您正在运行的 SQL Server 版本。
使用“低优先级锁等待”重建索引:
在此处查看Paul Randal的优秀文章Low Priority Wait和Testing Index rebuilds with Low Priority Wait by Kendra Little以获得清晰的解释。
这是特定于索引维护的,我假设您的维护计划确实包括完整性检查和其他内容。
一种选择是编写一些 TSQL 代码来监视阻塞,并创建和安排 SQL 代理作业以根据其运行的 SQL 文本自动终止“低优先级会话”。
如果您遇到由死锁引起的问题,您可能可以降低死锁优先级值以查看是否有帮助。
根据资源争用的类型,您还可以尝试使用Resource Governor限制特定登录的资源。
如果您使用自定义维护计划,您可能需要研究并开始使用Ola Hallengren 的维护解决方案。