【发布时间】:2011-03-18 16:16:41
【问题描述】:
我有一组非常大的数据(约 300 万条记录),需要按每日计划与更新和新记录合并。我有一个存储过程,它实际上将记录集分解为 1000 个记录块,并将MERGE 命令与临时表一起使用,以避免在数据更新时锁定活动表。问题是它并不完全有帮助。该表仍然“锁定”,并且我们使用数据的网站在尝试访问数据时会收到超时。我什至尝试将它分成 100 个记录块,甚至尝试使用WAITFOR DELAY '000:00:5' 来查看它是否有助于在合并块之间暂停。它仍然相当缓慢。
我正在寻找有关如何在不锁定表的情况下合并大型数据集的任何建议、最佳做法或示例。
谢谢
【问题讨论】:
-
有什么方法可以将 NOLOCK 与 MERGE 结合使用吗?数据只从站点读取,只由后端处理器更新,所以我不需要任何锁定。
-
你有没有办法在 SQL MERGE 语句中不锁定源表?
标签: performance sql-server-2008 merge table-locking large-data