我试图找出Amazon Redshift中不同类型的排序键,但遇到了奇怪的警告here,但没有解释:
重要提示:请勿在具有单调递增属性的列(例如标识列,日期或时间戳记)上使用交错式排序键。
但是,Amazon在自己的example中对日期列使用交织键具有良好的性能。
所以,我的问题是-此警告的解释是什么,我应该认真对待吗?更准确地说-在时间戳列上使用交错键是否存在问题?
答案 0 :(得分:3)
我认为稍后可能会描述吸尘/重新索引问题:
表最初加载时,Amazon Redshift会分析 排序键列中值的分布并使用 排序键列的最佳交错信息。作为一个 表增长,排序键列中的值分布 可以尤其是在日期或时间戳记列中进行更改或倾斜。如果 偏斜变得太大,可能会影响性能。
因此,如果这是唯一原因,则仅表示您将对索引进行更多的维护。
答案 1 :(得分:3)
来自https://docs.aws.amazon.com/redshift/latest/dg/t_Sorting_data.html
将行添加到已包含数据的排序表中时, 未排序的区域会增长,这会对性能产生重大影响。 当表格使用交错排序时,效果会更大, 尤其是当排序列中包含增加的数据时 单调,例如日期或时间戳列。
原始引用中的要点不是数据是日期或时间戳,而是“单调”增加,在这种情况下,这大概意味着顺序增加,例如事件时间戳或ID号。
答案 2 :(得分:0)
当您知道平均每天有X个行被处理并且要基于它进行过滤时,如果将date(不是时间戳记)列作为交错的排序键,则很有意义,如果您不打算使用它,则离开出来。 还要注意真空-当VACUUM进程正在进行时,它需要临时空间才能通过对数据进行排序然后合并成块来完成任务。在飞行途中取消VACUUM过程将导致无法回收多余的空间,因此,如果由于某种原因取消了集群中的任何Vacuum,则可以考虑增加空间。请参见链接https://docs.aws.amazon.com/redshift/latest/dg/r_VACUUM_command.html#r_VACUUM_usage_notes和第3点,最后一点是您特别感兴趣的。 在我看来,与插入的行数相比,表的增长非常迅速,因此不得不使用深度复制来创建自动表创建