更新时间:2024-12-25 GMT+08:00
分享

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);

参数描述

表1 参数描述

参数

描述

database_name

Database名称,由字母、数字和下划线(_)组成。

table_name

Database中的表名,由字母、数字和下划线(_)组成。

boolExpression

过滤条件表达式。

columnList

z排序指定的字段列表,Z顺序列应与分区列不同。

所需权限

  • SQL权限
表2 OPTIMIZE所需权限列表

权限描述

表的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日志和客户端中查看命令运行成功或失败。

相关文档