本文介绍如何使用云数据库 MySQL 版的异步删除大表功能。
当某张表的数据文件很大时,如果采取同步的操作的方式删除表,会对实例运行带来一定影响,使 IO 发生抖动。
MySQL 5.7 版本实例暂不支持该功能。
云数据库 MySQL 版支持异步删除大表。开启异步删除大表功能后,删除大表的操作会由内核自动异步完成,降低删除大表操作对实例性能产生的波动。用户在删除表后也无需进行其他操作,剩余工作由内核自动完成。异步删除大表时,会先把表的数据文件重命名为临时文件,然后后台线程平缓地 truncate 掉临时文件。
该功能适用于需要删除或 truncate 大表,且对性能波动比较敏感的业务场景。
异步删除大表功能默认关闭。对于 MySQL 8.0 实例,可通过设置可修改参数 loose_innodb_data_file_logic_drop
和 loose_innodb_data_file_logic_drop_max_size
即可使用此功能。
修改 loose_innodb_data_file_logic_drop
为 ON
可开启此功能。
修改loose_innodb_data_file_logic_drop_max_size
可用于指定异步删除大表时在后台每次 truncate 文件的大小。
说明
云数据库 MySQL 版后台 truncate 的频率为 5 次/秒。如配置 loose_innodb_data_file_logic_drop_max_size
为 1024MB,理论上每秒会 truncate 5GB 数据文件。
关于 loose_innodb_data_file_logic_drop
和 loose_innodb_data_file_logic_drop_max_size
的更多信息,请参见下表。
参数名 | 参数说明 |
---|---|
loose_innodb_data_file_logic_drop | 是否开启异步清理大表。取值:
说明 该参数在修改后无需重启实例即可生效。 |
loose_innodb_data_file_logic_drop_max_size | 异步删除大表时在后台每次 truncate 文件的大小。取值范围为 128~2048,默认值为 1024,单位为 MB。 说明
|
通过设置可修改参数 loose_innodb_data_file_logic_drop
和 loose_innodb_data_file_logic_drop_max_size
即可使用此功能。云数据库 MySQL 版支持通过控制台和 Open API 两种方式修改参数。
通过控制台修改
登录云数据库 MySQL 版控制台,在参数配置页签修改参数。更多详细信息,请参见修改参数。
通过 Open API 修改
调用 ModifyDBInstanceParameters 接口修改。更多详细信息,请参见 ModifyDBInstanceParameters。