在后台运行SQL查询

时间:2017-07-01 11:51:28

标签: sql sql-server

我正在尝试使用需要一点时间来计算的值更新60k记录的适度数据集。从生产环境中的6k小记录开始,需要4分钟才能完成,因此完整执行大约需要40分钟。

但是,此试运行表明,在访问相关表中的数据时,用户请求上发生了SQL超时(但不一定是在正在更新的实际行上)。

我的问题是,有没有办法在SQL服务器中运行非紧急查询作为后台操作,而不会在很长一段时间内导致超时或表锁定?在此期间更新的列中的数据对于返回新值并不重要;又如果一个请求恰好进入这一行,返回旧的值将是完全可以接受的,而不是锁定设置直到更新完成(我不确定这是如何工作的来龙去脉,显然我想要防止数据损坏;可能是在后台排队任何其他更改的方法)

1 个答案:

答案 0 :(得分:2)

这可能是NOLOCK提示合适的情况。您可以在documentation中阅读有关SQL Server隔离级别的信息。谷歌搜索“SQL Server NOLOCK”将为您提供大量有关您不应过度使用该构造的材料。

我可能还会调查您是否需要 SQL查询来计算值。在6k记录上花费4分钟的单个查询。 。 。好吧,那是很长一段时间。您可能需要考虑将数据读入应用程序(例如,使用Python,R或其他)并在那里进行数据操作。也可以加速查询处理本身。