从单个临时表填充星型模式。

时间:2012-09-26 17:37:38

标签: oracle plsql oracle11g

从单个临时表填充星型模式的最佳方法是什么? dataload的行数为数百万,而star-schema是一个包含10个关联维度表的事实表。

场景1。首先对维度进行顺序插入,然后在事实表中进行大插入,然后使用更新的维度表加入登台表。我最担心的是由于大量数据导致并发插入维度/事实表,可能会发生锁定。

场景2。将数据加载拆分为较小的批次(10k行)并循环遍历整个登台表并以与 Scenarion 1中所述相同的方式插入批次。

场景3。编写一个大的 INSERT ALL 语句,并在插入的整个持续时间内锁定星型模式。此外,对于锁定问题,我将有一个复杂的插入语句,必须保存插入语句的所有业务逻辑(调试和维护的噩梦)

1 个答案:

答案 0 :(得分:1)

您可以在11g第2版(!)

中尝试DBMS_PARALLEL_EXECUTE

http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_parallel_ex.htm#ARPLS233

可以很好地分离较小块的大表,它可以让您轻松定义并行度等级。不要在处理块时使用并行提示或插入追加。

您可以毫无问题地加载维度表的假设似乎让我过于乐观。根据我的经验,您必须满足以下情况:尺寸数据的所有信息在加载时都不是有效的。