OPTIMIZE
命令功能
OPTIMIZE命令用于优化数据在存储中的布局,提高查询速度。
注意事项
- 由于Optimize是一项耗时的活动,因此需要根据更好的最终用户查询性能与优化计算时间之间的权衡来确定运行Optimized的频率。
- 分区表优化需要设置参数spark.sql.forcePartitionPredicatesOnPartitionedTable.enabled为false。
命令格式
OPTIMIZE [database_name.]table_name
[ WHERE boolExpression]
Z排序:
OPTIMIZE [database_name.]table_name
[ WHERE boolExpression]
ZORDER BY (columnList);
参数描述
参数 |
描述 |
---|---|
database_name |
Database名称,由字母、数字和下划线(_)组成。 |
table_name |
Database中的表名,由字母、数字和下划线(_)组成。 |
boolExpression |
过滤条件表达式。 |
columnList |
z排序指定的字段列表,Z顺序列应与分区列不同。 |
所需权限
- SQL权限
权限描述 |
---|
表的UPDATE权限 |
- 细粒度权限:dli:table:update。
- 由LakeFormation提供的元数据服务,权限配置详见LakeFormation文档。
示例
OPTIMIZE delta_table0; optimize delta_table0 where dt >= '2020-01-01'; OPTIMIZE delta_table0 WHERE dt >= current_timestamp() - INTERVAL 1 day ZORDER BY (price);
系统响应
可在driver日志和客户端中查看命令运行成功或失败。