
# 异步删除大表
#### 功能介绍
该功能主要用于在删除包含大量数据的表时，实现平滑删除，以避免IO的抖动。
开启该功能后，当通过DROP TABLE命令删除表时，系统会先将原数据库对应的.ibd文件重命名为一个新的临时文件，并立即返回操作成功的消息。系统随后会在后台分批次对该临时文件进行truncate处理，每次truncate的文件大小由innodb_rds_data_file_purge_max_size参数控制。
#### 约束限制
- 该功能仅支持RDS for MySQL 8.0.32及更高版本。
- 由于删除操作变为异步处理，磁盘空间的释放将比功能启用前需要更长的时间。具体所需时间与表大小和单次truncate的文件大小、truncate周期相关。
 
#### 参数介绍
表1数据库参数 
| 参数名称                                | 是否需要重启 | 默认值 | 允许值            | 描述                       |
|:---|:---|:---|:---|:---|
| innodb_rds_data_file_purge          | 否      | OFF | ON,OFF         | 是否启用后台异步清理大文件策略。         |
| innodb_rds_data_file_purge_interval | 否      | 100 | 0\~10000       | 异步清理线程调度的周期，单位：ms。       |
| innodb_rds_data_file_purge_max_size | 否      | 32  | 16\~1073741824 | 异步清理线程每个周期清理的文件大小，单位：MB。 |
   
使用如下命令删除表：
```
drop table table_name;
```
使用如下命令查看清理进度：
```
select * from information_schema.rds_innodb_purge_files;
```
```
+--------+---------------------+---------------------+---------------+---------------------+--------------+
| log_id | start_time          | original_path       | original_size | temporary_path      | current_size |
+--------+---------------------+---------------------+---------------+---------------------+--------------+
|     76 | 2025-11-11 21:20:19 | ./file_purge/t1.ibd |     146800640 | ./#FP_1762772250_9  |     46137344 |
```
表2参数说明 
| 参数             | 说明                    |
|:---|:---|
| start_time     | 清理操作的开始时间。            |
| original_path  | 表数据文件的原始路径。           |
| original_size  | 表数据文件的原始大小，单位：byte。   |
| temporary_path | 清理中的临时文件路径。           |
| current_size   | 待清理的剩余临时文件大小，单位：byte。 |
   
