千家信息网

MySQL大表删除正确的姿势

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,1、背景在生产环境有可能有删除某个不重要大表的需求,因为大表占用的大量磁盘空间,如果我们直接drop掉此表,通常需要20秒以上的时间,总会觉得会卡主MySQL,现在给大家一个正确的删除姿势。2、首先我
千家信息网最后更新 2026年11月03日MySQL大表删除正确的姿势

1、背景

在生产环境有可能有删除某个不重要大表的需求,因为大表占用的大量磁盘空间,如果我们直接drop掉此表,通常需要20秒以上的时间,总会觉得会卡主MySQL,现在给大家一个正确的删除姿势。

2、首先我们查看此大表

shell>ls log_api_call_01_01* -l

-rw-r----- 1 mysql mysql 9362 Jun 22 15:35 log_api_call_01_01.frm

-rw-r----- 1 mysql mysql 293334036112 Jun 22 15:38 log_api_call_01_01.ibd

shell>ln log_api_call_01_01.ibd log_api_call_01_01ibd.bak

shell>ls log_api_call_01_01* -l

-rw-rw-- 1 MySQL mysql 9362 Apr 14 23:03 log_api_call_01_01.frm

-rw-r----- 1 mysql mysql 293334036112 Jun 22 15:38 log_api_call_01_01.ibd

-rw-r----- 1 mysql mysql 293334036112 Jun 22 15:38 log_api_call_01_01.ibd.bak

mysql>drop table log_api_call_01_01;

Query Ok, 0 rows affacted(0.92 sec)

通过这样的操作,可以减少mysql drop大表hang住的时间,然后在业务低峰期再去删除真实的那个*.b文*.bak件。


至于原理:

就是利用OS HARD LINK的原理,

当多个文件名同时指向同一个INODE时,这个INODE的引用数N>1, 删除其中任何一个文件名都会很快.

因为其直接的物理文件块没有被删除.只是删除了一个指针而已;

当INODE的引用数N=1时, 删除文件需要去把这个文件相关的所有数据块清除,所以会比较耗时;


对于大表操作操作的其实几个Tips:

可以先用rename table替代drop table

mysql> rename table log_api_call_01_01 to log_api_call_01_01_bak;

删除物理文件

for i in `seq 100 -1 1 ` ;do sleep 2;sudo truncate -s ${i}G /data/mysql/manager/log_api_call_01_01.ibd.bak;done sudo rm -rf /data/mysql/manager/log_api_call_01_01.ibd.bak;

这个动作也很快只是相当于改一个文件名。

另外也可以考虑使用XFS文件系统,对于Drop表动作也比较快。


文件 动作 原理 只是 很快 文件名 时间 物理 姿势 重要 业务 同时 名都 多个 就是 总会 指向 指针 数据 环境 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 广州紫鲸互联网科技有限公司 互联网与科技发展 科技制造互联网公司 壕鑫互联网络科技 深圳期待互联网科技 互联网科技宣传片 成都狮子座互联网科技 国外互联网科技网站 互联网公司会议桌创意科技软装饰 安控科技rtu产品工业互联网 隆华科技工业互联网 华服互联网科技官网 烟台灵鸽互联网科技有限公司 北京市互联网新科技 本届互联网大会上的黑科技 互联网科技包装股份有限公司上市 全球科技与互联网公司市值变化 张家口科技产业互联网平台 高科技和互联网的现代国家 互联网是第几次科技革命的成果 奔汉互联网科技 深圳天众互联网科技公司 长亮科技互联网金融 互联网 科技服务平台 科技与互联网哪个更好 互联网软件和科技 中国航天科技大学国际工业互联网 本届互联网博览会上的黑科技 中天科技中国工业互联网
0