我想确保在从只读模式运行查询时对服务器的压力最小(用户可以选择数据并创建临时表和变量,但不能执行SP,写入和其他更高级的东西)。在这种情况下我可以使用什么db提示/其他技巧?
目前我:
WITH (NOLOCK)
提示DEADLOCK_PRIORITY
设置为-10(虽然我不确定它是否真的需要,因为我正在使用NOLOCK
)我的目标是尽可能少地使用服务器资源,并允许服务器自由处理其他更重要的事情。我要发送到服务器的查询是本地的(不能保存为SP),并且每隔5分钟会有很多来自不同用户的查询。它们通常很简单SELECTs
并且孤立地便宜。有没有其他方法可以让它们更便宜?
编辑: 我不是我连接的服务器的所有者,所以我只能使用我传递给服务器的SQL查询来实现我想要的。
答案 0 :(得分:0)
您采取的两项措施影响不大。它们主要是出于迷信而使用的。他们可以在极少数情况下产生影响。实际上,READ UNCOMMITTED
(与NOLOCK
100%相同)可以在B树上进行分配顺序扫描。这对于不在内存中的表格来说非常重要。
如果要最小化锁定和阻止,快照隔离可以是一种简单而有效的解决方案。
为了真正最小化某个工作负载的影响,您需要使用资源调控器。其他一切都是部分解决方案/解决方法。
考虑限制CPU使用率,内存,IO和并行性。