暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL解决删除drop大表缓慢的问题

原创 余强 2020-04-16
3617

MySQL解决删除drop大表缓慢的问题

建立硬链接(如果是主从架构,请在所有机器上创建硬链接)

进入MySQL数据文件的目录
cd /var/lib/mysql/newdo_zipkin
例如表:zipkin_spans,把ibd和frm的都做起硬链接
ln zipkin_spans.ibd zipkin_spans.ibd.test
ln zipkin_spans.frm zipkin_spans.frm.test

数据库上执行drop表操作

use newdo_zipkin;
drop table zipkin_spans;

删除后在操作系统层面,文件zipkin_spans.ibd和zipkin_spans.frm都删除掉了,只剩下
zipkin_spans.ibd.test和zipkin_spans.frm.test

删除硬链接的.test文件

编写shell脚本,执行删除操作,需要配合truncate命令
查询是否安装了truncate
which truncate
如果没有,则需要先安装

shell脚本的内容为:

cd /var/lib/mysql/newdo_zipkin
TRUNCATE=/usr/bin/truncate
for i in `seq 8 -10 1 `;
do
 sleep 2
 $TRUNCATE -s ${i}G zipkin_spans.ibd.test
done
rm -rf zipkin_spans.ibd.test;
rm -rf zipkin_spans.frm.test;
EOF

复制

其中 8 -10 10的意思:
8:该数值建议为文件当前GB大小
-10:每次递减的文件大小,根据耗时情况、以及服务性能情况来确定每次删减的大小为宜
1:最后保留的文件大小,建议至少为1

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论