我们有一张关于3M记录的表格,这些记录在我们的应用程序中被广泛用于只读操作。我们每天都会收到一个带有新版本表的csv文件。大多数记录都没有更改,但有些记录是创建,更新或删除的。总变化量小于整个内容的1%。 使用新数据更新表格内容的最佳方法是什么?该表独占锁是不可接受的,该应用程序全天候工作。 更新应该在一次提交中完成。通过JDBC访问数据库。 谢谢。
答案 0 :(得分:1)
我会考虑将数据加载到全局临时表中,然后使用MERGE语句在公共唯一键值上连接目标表,从而应用更改。
在SO和文档中有很多MERGE示例。
https://docs.oracle.com/database/121/SQLRF/statements_9016.htm#SQLRF01606
答案 1 :(得分:0)
一种选择是维护一对表,并使用同义词在它们之间切换应用程序。
所以给定table1和table2,你的同义词在星期一指向table1。一夜之间你加载table2,然后切换同义词指向它而不是table1。
这样做的间接优势在于它可以保留以前的数据集,以防您需要切换回它。