
# VACUUM
#### 命令功能
VACUUM命令用于删除表目录中不由 Delta 管理的所有文件，并删除不再处于表事务日志最新状态且超过保留期阈值的数据文件。默认阈值为 7 天。
#### 注意事项
RETAIN num HOURS表示保留期阈值，建议设置为至少 7 天。
如果对 Delta 表运行VACUUM，则将无法再回头查看在指定数据保留期之前创建的版本。
Delta Lake 具有一项安全检查，用于防止运行危险的VACUUM命令，当指定保留期阈值少于168小时时会报错限制该操作。 如果确定指定保留期阈值进行vacuum操作，可通过将 Spark 配置属性 spark.databricks.delta.retentionDurationCheck.enabled 设置为 false 来关闭此安全检查。
#### 命令格式
**VACUUM** *\[database_name.\]table_name\|* *DELTA.\`obs://bucket_name/tbl_path\`* \[RETAIN num HOURS\];
支持通过DRY RUN参数模拟执行vacuum操作，返回vacuum将要删除的文件列表：
**VACUUM** *\[database_name.\]table_name\|* *DELTA.\`obs://bucket_name/tbl_path\`* \[RETAIN num HOURS\] \[DRY RUN\];
#### 参数描述
表1VACUUM参数 
| 参数            | 描述                            |
|:---|:---|
| database_name | Database名称，由字母、数字和下划线（_）组成。   |
| table_name    | Database中的表名，由字母、数字和下划线（_）组成。 |
| *bucket_name* | obs桶名称。                       |
| *tbl_path*    | Delta表在obs桶中的存储位置。            |
| num           | 保留期时长                         |
   
#### 所需权限
- SQL权限
表2VACUUM所需权限列表 
| 权限描述       |
|:---|
| 表的UPDATE权限 |
   
- 细粒度权限：dli:table:update。
- 由LakeFormation提供的元数据服务，权限配置详见LakeFormation文档。
 
#### 示例
```
VACUUM delta_table0 RETAIN 168 HOURS;
VACUUM delta_table0 RETAIN 48 HOURS DRY RUN;
VACUUM delta.`obs://bucket_name0/db0/delta_table0` RETAIN 168 HOURS;
```
#### 系统响应
可在driver日志和客户端中查看命令运行成功或失败。
