You need to enable JavaScript to run this app.
导航
异步删除大表
最近更新时间:2024.08.12 10:34:58首次发布时间:2024.03.25 21:38:31

本文介绍如何使用云数据库 MySQL 版的异步删除大表功能。

背景

当某张表的数据文件很大时,如果采取同步的操作的方式删除表,会对实例运行带来一定影响,使 IO 发生抖动。

使用限制

MySQL 5.7 版本实例暂不支持该功能。

功能介绍

云数据库 MySQL 版支持异步删除大表。开启异步删除大表功能后,删除大表的操作会由内核自动异步完成,降低删除大表操作对实例性能产生的波动。用户在删除表后也无需进行其他操作,剩余工作由内核自动完成。异步删除大表时,会先把表的数据文件重命名为临时文件,然后后台线程平缓地 truncate 掉临时文件。

适用场景

该功能适用于需要删除或 truncate 大表,且对性能波动比较敏感的业务场景。

使用说明

异步删除大表功能默认关闭。对于 MySQL 8.0 实例,可通过设置可修改参数 loose_innodb_data_file_logic_droploose_innodb_data_file_logic_drop_max_size 即可使用此功能。

  • 修改 loose_innodb_data_file_logic_dropON 可开启此功能。

  • 修改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_droploose_innodb_data_file_logic_drop_max_size 的更多信息,请参见下表。

参数名参数说明

loose_innodb_data_file_logic_drop

是否开启异步清理大表。取值:

  • OFF:关闭(默认)。
  • ON:开启。

说明

该参数在修改后无需重启实例即可生效。

loose_innodb_data_file_logic_drop_max_size

异步删除大表时在后台每次 truncate 文件的大小。取值范围为 128~2048,默认值为 1024,单位为 MB。

说明

  • 该参数在修改后无需重启实例即可生效。
  • 云数据库 MySQL 版当前配置的 truncate 频率为 5 次/秒,异步删除大表的理论速度 = loose_innodb_data_file_logic_drop_max_size *5。

操作步骤

通过设置可修改参数 loose_innodb_data_file_logic_droploose_innodb_data_file_logic_drop_max_size 即可使用此功能。云数据库 MySQL 版支持通过控制台和 Open API 两种方式修改参数。