首页 > 解决方案 > 拥有一个只读工作表和一个可写插入表,然后切换选择查询从哪个表读取

问题描述

这是场景:

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 的情况。

问题是:这是一种可行的技术,为什么或为什么不可行,它有一个通用名称吗?

标签: sqlsql-server-2008optimizationlarge-data

解决方案


是的,这是在 ETL 和报告中交替两组表格的可行方法。在 Oracle 中,同样可以使用分区交换来实现。


推荐阅读