美文网首页
Mysql删除大表更快的drop table办法

Mysql删除大表更快的drop table办法

作者: 刘大坝 | 来源:发表于2021-12-15 09:53 被阅读0次

Mysql删除大表更快的drop table办法

利用硬链接和truncate降低drop table对线上环境的影响

在DROP TABLE的时候,所有进程不管是DDL还是DML都被HANG起;直到DROP结束才继续执行;这是因为INNODB会维护一个全局独占锁(在table cache上面),直到DROP TABLE完成才释放。在我们常用的ext3,ext4,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还是需要点时间的。

下面我们介绍一个快速DROP table 的方法; 不管多大的表,INNODB 都可以很快返回,表删除完成;

[root@centos  ~]# ll  /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table* -th
-rw-r-----. 1 mysql mysql 2.0G May 29 22:39 /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table.ibd
-rw-r-----. 1 mysql mysql 8.5K May 29 21:51 /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table.frm
[root@centos ~]# 

此处假设mysql的安装目录为 /data/mysql/mysql-5.7.28/ 数据库为testdatabase,测试用的大表为my_test_table

直接使用DROP TABLE来完成删表动作,那么这条语句要执行很长时间。此时便可以通过在该表对应的数据文件上设置硬链接来进行删除。

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

创建方法都很简单:
软链接(符号链接) ln -s source target
硬链接 (实体链接)ln source targe

ln /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table.ibd  /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table.ibd.hdlk
# 进入mysql,执行删除表
> mysql -h 127.0.0.1 -uroot -p
> use testdatabase
> drop table my_test_table;

2、然后去操作系统中删除真正的大物理文件

for i in `seq 50 -1 1 ` ;do sleep 2; truncate -s ${i}G /data/mysql/mysql-5.7.28/data/testdatabase/my_test_table.ibd.hdlk;done  
rm -rf /data/mysql/mysql-5.7.28/data/testdatabase/t_user.ibd.hdlk  

从2G开始,每次缩减1M,停2秒,继续直到文件只剩1G,最后使用rm命令删除剩余的部分。
(文件越大,越能体现出来,这里是测试,文件只有2G,可以将其修改为M)

附:
原文链接:
https://www.cnblogs.com/bjx2020/p/9105044.html

相关文章

  • Mysql删除大表更快的drop table办法

    Mysql删除大表更快的drop table办法 利用硬链接和truncate降低drop table对线上环境的...

  • mysql删除表备忘

    mysql删除数据表有以下几种情况 1. drop table table_name   删除表全部数据和表结构,...

  • Oracle基本SQL语句

    删除表:drop table 表名 修改表结构:删除列:alter table 表名 drop column 列名...

  • MySQL删除大表drop table

    背景:在删除过大的表时,除了会导致DML和DDL阻塞之外,还会产生大量的IO,造成资源占用严重,影响正常的业务 前...

  • 08.*MySQL 删除数据表*

    MySQL 删除数据表 1.在phpMyAdmin中运行: DROP TABLE ·table_name ;· 2...

  • MySql之删除数据

    删除表 drop table 表名或者drop table if exists 表名 delete语句 delet...

  • 2019-03-21

    -- 创建表 create TABLE -- 删除表 drop TABLE create TABLE test1(...

  • Oracle删除用户和表空间

    删除USER。 DROP USER XX CASCADE 删除表空间。 DROP TABLESPACE table...

  • MySQL之alter语句用法总结

    MySQL之alter语句用法总结 1:删除列 ALTER TABLE 【表名字】 DROP 【列名称】 2:增加...

  • Kudu操作sql

    -----删除表 DROP TABLE test1; -----删除试图 DROP VIEW test2; ---...

网友评论

      本文标题:Mysql删除大表更快的drop table办法

      本文链接:https://www.haomeiwen.com/subject/iiiufrtx.html