案例:调整局部聚簇键
局部聚簇 (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的性能收益越明显。