更新时间:2024-07-01 GMT+08:00

案例:调整局部聚簇键

局部聚簇 (Partial Cluster Key, 简称PCK),列存储下一种通过min/max稀疏索引实现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。

优化前

创建一个无局部聚簇(以下称为PCK)的列存表orders_no_pck,表定义如下:

执行以下SQL语句,查询某个点查询的执行计划:

1
2
3
4
EXPLAIN PERFORMANCE
SELECT * FROM orders_no_pck
WHERE o_orderkey = '13095143'
ORDER BY o_orderdate;

由下图可知执行时间为48毫秒,查看Datanode Information发现filter时间为19毫秒,CUNone比例为0。

优化后

创建的列存表orders_pck。表定义如下:

使用ALTER TABLE将字段o_orderkey设置为PCK:

执行以下SQL语句,再次查询同样的点查询SQL语句的执行计划:

1
2
3
4
EXPLAIN PERFORMANCE
SELECT * FROM orders_pck
WHERE o_orderkey = '13095143'
ORDER BY o_orderdate;

由下图可知执行时间为5毫秒,查看Datanode Information发现filter时间为0.5毫秒,CUNone比例为82。CUNone比列越高,PCK的性能收益越明显。