
# Compaction篇
#### 如何判断compaction是否在执行？
执行show compaction on \<database name\>.\<table name\>
- MRS 3.5.0-LTS之前版本： ![](https://support.huaweicloud.com/devg-rule-mrs/zh-cn_image_0000002259599769.png)
  分析结果：
  1. 返回结果为空，代表compaction未配置，Hudi表没有做过一次compaction。
  
  2. 返回结果第二列的值为compaction，代表这是一个compaction计划，该计划未被执行。
  
  3. 返回结果第二列的值为commit，代表该compaction计划已被执行。
   
- MRS 3.5.0-LTS及之后版本： ![](https://support.huaweicloud.com/devg-rule-mrs/zh-cn_image_0000002259895333.png)
  分析结果：
  1. 返回结果为空，代表compaction未配置，Hudi表没有做过一次compaction。
  
  2. 返回结果第二列的值为requested，代表这是一个compaction计划，该计划未被执行。
  
  3. 返回结果第二列的值为completed，代表该compaction计划已被执行。
   
 
#### 如何判断compaction是否设置的合理？
**判断标准：**
随机找一个近期写的parquet文件，parquet文件名称中第一个下划线之前的内容就是FileID，第二个下划线之后的内容就是这个parquet文件的commit time，同理log文件也是。把FileID相同的parquet文件和log文件都找出来，先找到同FileID中commit time最大的parquet文件，把这个commit time记作A，再去找同FileID中所有commit time大于等于A的log文件。
1. 如果log文件的数量只有1个，而且size小于300M，那compaction是合理的，处于最佳状态。
2. 如果log文件的数量有多个，而且size都是1G的，那compaction不合理，已经影响到读性能。
**举例**：
Hudi表如下：
![](https://support.huaweicloud.com/devg-rule-mrs/zh-cn_image_0000002259743493.png)
分析结果：00000000-e42f-4a07-be73-23c50a635ed3-0对应两个parquet文件，时间戳最大的是20250328141314559，没有找到大于或等于该时间戳的log文件。00000001-919b-4bc2-88b7-6dff8408f3eb-0对应一个parquet文件，时间戳大于或等于20250328141507479的log文件只有一个，但是size是931B，compaction是合理的。
