sql - 拥有一个只读工作表和一个可写插入表,然后切换选择查询从哪个表读取
问题描述
这是场景:
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 的情况。
问题是:这是一种可行的技术,为什么或为什么不可行,它有一个通用名称吗?
解决方案
是的,这是在 ETL 和报告中交替两组表格的可行方法。在 Oracle 中,同样可以使用分区交换来实现。
推荐阅读
- react-native - MapboxGL.MapView zoomLevel 不起作用(对于 react-native 版本)
- mysql - 根据引用行和被引用行计算自引用表中的引用
- python - Python从列表中获取所有子采样的组合
- php - 我的代码中的错误注意:试图获取非对象的属性
- python - 如果数据框中不存在,如何在熊猫中添加列
- neo4j - 无法在NEO4J中动态建立两个节点属性之间的关系
- ada - 设置裸机 x86 Ada 工具链
- python - 如何使用 Django 和 Oracle 更改每个请求的架构?
- apache-spark - Kafka 到 Spark 的集成
- r - R中的按值传递问题(即使有副本)