【发布时间】:2019-02-24 03:58:24
【问题描述】:
这里是场景:
TableA - 架构并不重要
TableB - 与 TableA 相同的架构
SYNONYM ROTable FROM TableA
SYNONYM InsertTable from TableB
select * from ROTable ... (read only)
Trunc InsertTable
BULK insert into InsertTable () ... some data
DROP SYNONYM ROTable
DROP SYNONYM InsertTable
SYNONYM ROTable FROM TableB
SYNONYM InsertTable from TableA
我什至不知道如何称呼这种技术,但我一直将其称为双缓冲大容量插入。您有 2 个相同的表,您从一个表中读取,同时将记录插入到第二个表中。将记录插入第二个表后,切换到从第二个表读取并截断第一个表并再次开始批量插入。
这将用于当您有大量 UPSERTS 要做时不想在活动表上执行 UPSERTS 的情况。
问题是:这是一种可行的技术,为什么或为什么不可行,它有一个通用名称吗?
【问题讨论】:
-
有趣的问题 - 这是一个有用且经常使用的模式,但通用模式有名称吗?如果没有,您应该先写一篇博客并将其称为 Michael Horn 技术 :) 这是一篇使用类似模式的文章,但名称又是特定于技术的(分区)sqlsunday.com/2014/08/24/… 它也可以通过 RCSI 有效实现。也许它可以被认为是一种并发模型??
标签: sql sql-server-2008 optimization large-data