【发布时间】:2010-09-08 19:41:26
【问题描述】:
有没有办法告诉 MS SQL 一个查询不太重要,它可以(并且应该)花时间?
同样有没有办法告诉 MS SQL 它应该给查询更高的优先级?
【问题讨论】:
-
奇怪的问题,因为长时间运行的查询可能会导致更多的锁定。
-
应该以最小化锁定的方式创建长时间运行的查询。
标签: sql sql-server database
有没有办法告诉 MS SQL 一个查询不太重要,它可以(并且应该)花时间?
同样有没有办法告诉 MS SQL 它应该给查询更高的优先级?
【问题讨论】:
标签: sql sql-server database
在低于 SQL 2008 的版本中没有。在 SQL Server 2008 中有资源管理器。使用它,您可以根据登录名的属性(登录名、应用程序名等)将登录名分配给组。然后可以将这些组分配到资源池和限制或限制 i.t.o.资源可以应用于那些资源池
【讨论】:
我不确定这是否是您要问的,但我遇到过一种情况,即单击一次 UI 会向电子邮件队列添加 10,000 条记录(正文中有大量数据)。这封电子邮件在接下来的几天内就发出去了,因此它不需要成为高优先级,事实上,每次发生它都会使服务器陷入困境。
我将该过程拆分为 10,000 个单独的调用,在不同线程(设置为低优先级)的 UI 上运行该过程,并在运行该过程后将其设置为休眠一秒钟。这花了一些时间,但我可以非常精细地控制它正在做什么。
顺便说一句,这不是垃圾邮件,所以不要以为是垃圾邮件。
【讨论】:
SQL Server 还没有任何形式的资源调控器。有一个名为 QUERY_GOVERNOR_COST_LIMIT 的 SET 选项,但它并不是您想要的。并且它可以防止查询基于成本而不是控制资源来执行。
【讨论】: