本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
分区提示
分区提示控制执行器节点之间的数据分发。当指定了多个分区提示时,会将多个节点插入到逻辑计划中,但最左边的提示由优化器选择。
COALESCE
将分区数减少到指定的分区数。
参数:数值(必填)-必须是介于 1 和 2147483647 之间的正整数
示例:
-- Reduce to 5 partitions SELECT /*+ COALESCE(5) */ employee_id, salary FROM employees;
区分
使用指定的分区表达式将数据重新分区到指定数量的分区。使用循环分发。
参数:
-
数值(可选)-分区数;必须是介于 1 和 2147483647 之间的正整数
-
列标识符(可选)-要分区的列;这些列必须存在于输入架构中。
-
如果两者都指定,则必须先指定数值
示例:
-- Repartition to 10 partitions SELECT /*+ REPARTITION(10) */ * FROM employees; -- Repartition by column SELECT /*+ REPARTITION(department) */ * FROM employees; -- Repartition to 8 partitions by department SELECT /*+ REPARTITION(8, department) */ * FROM employees; -- Repartition by multiple columns SELECT /*+ REPARTITION(8, department, location) */ * FROM employees;
按范围重新分区
在指定列上使用范围分区将数据重新分区到指定数量的分区。
参数:
-
数值(可选)-分区数;必须是介于 1 和 2147483647 之间的正整数
-
列标识符(可选)-要分区的列;这些列必须存在于输入架构中。
-
如果两者都指定,则必须先指定数值
示例:
SELECT /*+ REPARTITION_BY_RANGE(10) */ * FROM employees; -- Repartition by range on age column SELECT /*+ REPARTITION_BY_RANGE(age) */ * FROM employees; -- Repartition to 5 partitions by range on age SELECT /*+ REPARTITION_BY_RANGE(5, age) */ * FROM employees; -- Repartition by range on multiple columns SELECT /*+ REPARTITION_BY_RANGE(5, age, salary) */ * FROM employees;
再平衡
重新平衡查询结果输出分区,使每个分区的大小合理(不要太小也不要太大)。这是尽力而为的操作:如果存在偏差, AWS Clean Rooms 将拆分偏斜的分区以使其不会太大。当您需要将查询结果写入表中以避免文件太小或太大时,此提示很有用。
参数:
-
数值(可选)-分区数;必须是介于 1 和 2147483647 之间的正整数
-
列标识符(可选)-列必须出现在 SELECT 输出列表中
-
如果两者都指定,则必须先指定数值
示例:
-- Rebalance to 10 partitions SELECT /*+ REBALANCE(10) */ employee_id, name FROM employees; -- Rebalance by specific columns in output SELECT /*+ REBALANCE(employee_id, name) */ employee_id, name FROM employees; -- Rebalance to 8 partitions by specific columns SELECT /*+ REBALANCE(8, employee_id, name) */ employee_id, name, department FROM employees;