MySQL大表删除正确的姿势

1,背景

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

2,首先我们查看此大表

shell> ls log_api_call_01_01 * - l

-rw-r——1 MySQL mysql ,9362年6月22日15:35 log_api_call_01_01.frm

-rw-r mysql mysql - - - - - - 1 293334036112 6月22日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 MySQL MySQL - 9362 4月14日23:03 log_api_call_01_01.frm

-rw-r——1 MySQL mysql  293334036112 6月22 38 log_api_call_01_01。ibd

-rw-r——1 mysql mysql  293334036112年6月22日38 log_api_call_01_01.ibd.bak

mysql> table 下降;log_api_call_01_01;

查询好,0行量(0.92秒)

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



对于大表操作操作的其实几个小贴士:

可以先用重命名表替代drop table

mysql>重命名表log_api_call_01_01 log_api_call_01_01_bak;

删除物理文件

我在;我;sudo - $ {} G/数据/mysql/经理/log_api_call_01_01.ibd.bak;做sudo rm射频/数据/mysql/经理/log_api_call_01_01.ibd.bak;

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

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


MySQL大表删除正确的姿势