更新时间:2022-09-30 GMT+08:00

ALTER TABLE COMPACTION

命令功能

ALTER TABLE COMPACTION命令将合并指定数量的segment为一个segment。这将提高该表的查询性能。

命令格式

ALTER TABLE[db_name.]table_name COMPACT 'MINOR/MAJOR/SEGMENT_INDEX';

ALTER TABLE[db_name.]table_name COMPACT 'CUSTOM' WHERE SEGMENT.ID IN (id1, id2, ...);

参数描述

表1 ALTER TABLE COMPACTION参数描述

Parameter

Description

db_name

数据库名。若未指定,则选择当前数据库。

table_name

表名。

MINOR

Minor合并,详见合并Segments

MAJOR

Major合并,详见合并Segments

SEGMENT_INDEX

这会将一个segment内的所有Carbon索引文件(.carbonindex)合并为一个Carbon索引合并文件(.carbonindexmerge)。 这增强了首次查询性能。详见表1

CUSTOM

Custom合并,详见合并Segments

注意事项

NA

示例

ALTER TABLE ProductDatabase COMPACT 'MINOR';

ALTER TABLE ProductDatabase COMPACT 'MAJOR';

ALTER TABLE ProductDatabase COMPACT 'SEGMENT_INDEX';

ALTER TABLE ProductDatabase COMPACT 'CUSTOM' WHERE SEGMENT.ID IN (0, 1);

系统响应

由于为后台运行,ALTER TABLE COMPACTION命令不会显示压缩响应。

如果想要查看MINOR合并和MAJOR合并的响应结果,用户可以检查日志或运行SHOW SEGMENTS命令查看。

示例:

+------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+
|  ID  |   Status   |     Load Start Time      | Load Time Taken  | Partition  | Data Size  | Index Size  | File Format  |
+------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+
| 3    | Success    | 2020-09-28 22:53:26.336  | 3.726S           | {}         | 6.47KB     | 3.30KB      | columnar_v3  |
| 2    | Success    | 2020-09-28 22:53:01.702  | 6.688S           | {}         | 6.47KB     | 3.30KB      | columnar_v3  |
| 1    | Compacted  | 2020-09-28 22:51:15.242  | 5.82S            | {}         | 6.50KB     | 3.43KB      | columnar_v3  |
| 0.1  | Success    | 2020-10-30 20:49:24.561  | 16.66S           | {}         | 12.87KB    | 6.91KB      | columnar_v3  |
| 0    | Compacted  | 2020-09-28 22:51:02.6    | 6.819S           | {}         | 6.50KB     | 3.43KB      | columnar_v3  |
+------+------------+--------------------------+------------------+------------+------------+-------------+--------------+--+

其中,

  • Compacted表示该数据已被合并。
  • 0.1表示segment0与segment1合并之后的结果。

数据合并前后的其他操作没有差别。

被合并的segments(例如segment0和segment1)即成为无用的segments,会占用空间,因此建议合并之后使用CLEAN FILES命令进行彻底删除,再进行其他操作。CLEAN FILES命令的使用方法可参考CLEAN FILES