最小化SQL Server对来自只读模式的查询的压力

时间:2014-10-02 13:32:44

标签: sql sql-server

我想确保在从只读模式运行查询时对服务器的压力最小(用户可以选择数据并创建临时表和变量,但不能执行SP,写入和其他更高级的东西)。在这种情况下我可以使用什么db提示/其他技巧?

目前我:

  1. 对每个表使用WITH (NOLOCK)提示
  2. 将整批的DEADLOCK_PRIORITY设置为-10(虽然我不确定它是否真的需要,因为我正在使用NOLOCK
  3. 我的目标是尽可能少地使用服务器资源,并允许服务器自由处理其他更重要的事情。我要发送到服务器的查询是本地的(不能保存为SP),并且每隔5分钟会有很多来自不同用户的查询。它们通常很简单SELECTs并且孤立地便宜。有没有其他方法可以让它们更便宜?

    编辑: 我不是我连接的服务器的所有者,所以我只能使用我传递给服务器的SQL查询来实现我想要的。

1 个答案:

答案 0 :(得分:0)

您采取的两项措施影响不大。它们主要是出于迷信而使用的。他们可以在极少数情况下产生影响。实际上,READ UNCOMMITTED(与NOLOCK 100%相同)可以在B树上进行分配顺序扫描。这对于不在内存中的表格来说非常重要。

如果要最小化锁定和阻止,快照隔离可以是一种简单而有效的解决方案。

为了真正最小化某个工作负载的影响,您需要使用资源调控器。其他一切都是部分解决方案/解决方法。

考虑限制CPU使用率,内存,IO和并行性。