
# 清理Paimon过期数据
#### 操作场景
清理过期数据可以释放存储空间，优化资源利用并提升系统运行效率等。
#### 调整快照文件过期时间
快照文件用于还原历史状态，在其存续期间，关联的历史数据文件无法删除。随着快照不断生成，存储占用会持续增长，通过清理不再使用的快照文件，可以释放其指向的历史数据文件所占用的空间。
[表1]中的参数决定了快照文件的过期时间。
 表1快照文件的过期时间参数 
| **参数**                    | **说明**         | **数据类型** | **默认值**    |
|:---|:---|:---|:---|
| snapshot.num-retained.min | 至少保留的快照文件个数。   | Integer  | 10         |
| snapshot.num-retained.max | 至多保留的快照文件个数。   | Integer  | 2147483647 |
| snapshot.time-retained    | 一个快照文件最长的保留时间。 | Duration | 1h         |
   
在当前快照文件数量大于"snapshot.num-retained.min"的前提下，只要当前快照文件数量大于"snapshot.num-retained.max"，或最早的快照文件产出时间超过了"snapshot.time-retained"，就会触发快照清理。
#### 手动清理临时文件
由于作业报错重启等原因，Paimon表目录下可能会遗留一些未被提交的临时文件。这些文件无法通过快照过期机制删除，需要手动清理。可通过执行如下SQL进行清理：
```
CALL my_catalog.sys.remove_orphan_files(table => '<my_db>.<my_table>');
```
其中，*my_catalog* 是Paimon Catalog名称，*my_db* 是需要清理的Paimon表所在的数据库名称，*my_table*是需要清理的Paimon表的表名称。默认情况下，该操作只清理创建时间超过1天的废弃文件。可以通过传入额外参数，指定清理截止时间，但需要确保指定时间之前启动的写入任务都已经结束；例如业务中写入任务最长运行2个小时，则清理截止时间需要指定为2个小时之前，否则可能误删正在运行而未提交任务产生的数据文件，导致数据丢失。例如，清理my_catalog.my_db.my_table表中创建时间不晚于2026-01-01 12:00:00的废弃文件：
```
CALL my_catalog.sys.remove_orphan_files(table => '<my_db>.<my_table>', older_than => '2026-01-01 12:00:00');
```
