MPP系统(Netezza/Teradata/Synapse)中的CREATE TABLE语句的性能如何受到ORGANIZE BY/DISTRIBUTION BY子句的影响? 另外,应该选择什么密钥在这样的MPP系统中分发?
简短的回答是,只要您选择一个"分布",使行跨节点非常均匀地分布,那么它对插入性能几乎没有影响。
在 Netezza 上,创建表时不会强制执行"组织",即使在插入/更新数据时也不会强制执行。稍后,"新郎"操作会根据您的请求执行此操作。旁注:在执行 CTAS 或大型插入时,如果可能,您应该在插入语句中"排序"。
关于选择"分布"列:
- 始终确保非常均匀的点差(如果不可能:随机更好)
- 切勿使用多列
- 并选择一个您计划在(很多)上进行大量"平等连接"> 的操作
关于选择"单位"列
- 只考虑你计划对(=,<,>,LIKE)执行大量"简单位置"子句的列
- 倾向于那些几乎没有明显价值观的人
- 和"时间"列总是一个很好的猜测
提示:有时您会在一列上获得"免费"组织效果,因为它与您已经组织的另一列密切相关。 示例:如果create_date与包含 5 年数据的表中的end_date平均距离不到 30 天,那么您将产生该效果