多级分区主索引 (MLPPI) 如何提高 Teradata 中插入的性能?

How multilevel partitioned primary indexes(MLPPIs) may improve the performance of inserts in teradata?

我一直在寻找一些证据,证明 MLPPI 会影响插入性能。根据 link,实际上没有说明原因:

MLPPIs—provide an opportunity to significantly improve the performance of certain queries and high-volume insert, update and delete operations.

That article 建立了有趣的案例,说明如何使用此类索引来改善加载,但它作为证据看起来并不可靠。

另外,我也进行了自己的调查: 我有 1200 万的 table。具有 date 类型字段的行,所以我创建了 2 个新的空 tables,在该日期类型字段上有分区和没有分区,但几乎与原始 table 具有相同的结构,除了分区.然后我将所有这些 1200 万都插入了它们。解释给出了 3 分钟以上的完全相同的结果。人为地试图通过显式指向日期将所有这 1200 万行插入一个分区并没有改变时间。

所以我的问题是:MLPPI 是否可以提高插入的性能,为什么?

您应该认为这篇文章是可靠的,Paul Sinclair 是 MLPPI 的发布架构师:)

当你插入一个空的 table 时,你几乎不会注意到有或没有分区的任何区别。事实上,如果源 table 具有相同的 PI 并且由于重新排序而没有分区,PPI 可能会更慢。

但是当你插入一个填充的table(或更新)并且所有行都转到几个分区时,它会更快,因为你跳过未使用的分区并读取(并且可能写入)更少的数据块,即每个块插入(或更新)的行数要高得多。

如果您插入一个空分区,它会使用 FastPath 处理(如空 table)并避免 Transient Journaling.