【发布时间】:2016-09-26 19:33:43
【问题描述】:
我的项目有一个要求是在做一些验证后在一个表中插入 1500 万条记录,这应该在 20 分钟内完成。
源表是一个从其他应用程序接收数据的临时表。现在,从这个临时表中,我们必须在验证后将数据插入到其中一个基表中。当这个过程结束时,我们必须将 staging 表中的记录插入到两个单独的历史表中。
第一次插入的时间应该是 20 分钟。 接下来两次插入的总时间应该是 20 分钟。
同一个数据库中的所有四个表,在同一个模式中。 我在案例 1 中使用 Pro*C 进行验证,但在第二次插入中有一个 plsql 包。
谁能帮我提些建议,数据库是oracle 9i。另外20分钟内最多可以处理多少条记录?
【问题讨论】:
-
行来自哪里?您是否真的在使用 Oracle 9i,这个版本至少有 5 个主要修订版本并且多年来一直不受支持?你今天到底是怎么做的?这里有很多可能的架构似乎绰绰有余。 Oracle 定期进行演示,在 1 小时的演示中,他们将 TB 数据加载到在 Exadata 机器上运行的数据仓库中。
-
嗨贾斯汀。这些行通过 ETL 工具来自另一个应用程序。是的,我们使用的是 9i,因为整个系统太旧了。为了我的测试目的,我只是通过我自己的测试数据准备脚本手动插入任何记录。如果需要其他信息,请告诉我。
-
仅供参考今天我尝试在桌子上使用 DOP 10,仅插入一张桌子花了 19 分钟。但是由于大量批处理在夜间运行,我们无法进行大量并行处理。
-
好的,所以有一个ETL工具。什么工具?该工具是否在进行基于集合的操作?还是逐行操作?它会将所有数据拉到运行 ETL 工具的机器上吗?还是在数据库中操作?在数据库中从一个表到另一个表的基于集合的插入应该非常快。
-
该工具整天将数据插入到我们的临时表中。晚上,我们必须为上述流程运行 2 批。抱歉,我没有太多关于您提出的关于插入我们的数据库的问题的信息,因为我们主要关心的是从暂存表中获取数据并在每个 20 分钟内处理。
标签: plsql parallel-processing proc oracle9i