tencent cloud

文档反馈

异步删除大表

最后更新时间:2023-07-05 11:40:24

    功能介绍

    该功能主要用于删除数据文件很大的表,避免 IO 的抖动。

    DROP TABLE 会将原数据库文件 (.ibd) 重命名为一个新的临时文件并返回成功,临时文件存放在 innodb_async_drop_tmp_dir 指定的目录下,并在后台分批次 truncate,每次 truncate 的文件大小由 innodb_async_truncate_size 控制,异步删表功能的开启由:innodb_async_truncate_work_enabled(MySQL 5.6)、innodb_table_drop_mode(MySQL 5.7、8.0)参数控制。

    该功能无需用户操作,由内核自动完成,其原理是在删除表时,为表的数据文件在另外一个目录中创建一个硬连接。当执行 drop table 后,删除的只是该文件的一个硬连接。之后后台线程扫描到硬连接目录中有需要删除的文件,自动在后台 truncate 前面 drop 掉表数据文件。

    支持版本

    • 内核版本 MySQL 5.6 20200303 及以上
    • 内核版本 MySQL 5.7 20220715 及以上
    • 内核版本 MySQL 8.0 20200630 及以上

    适用场景

    该功能适用于需要删除的表数据文件很大的场景。

    使用说明

    • MySQL 5.6 版本,通过设置 innodb_async_truncate_work_enabled 为 ON,DROP TABLE 即会变成异步模式,默认值为 OFF。
    • MySQL 5.7、8.0 版本,通过设置 innodb_table_drop_mode 为 ASYNC_DROP,DROP TABLE 即会变成异步模式,默认值为 SYNC_DROP。
    • 每次 truncate 的文件大小由 innodb_async_truncate_size 控制(MySQL 5.6 版本暂不支持)。
    • 打开 innodb_fast_ddl 参数后,可以让异步删除大表能力更高效。
    参数名动态类型默认参数值范围说明
    innodb_async_truncate_work_enabledYesstringOFFON/OFF是否开启异步清理大表。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持