当前位置:首页 > mysql > 正文内容

mysql中超大表的删除方法

phpmianshi4年前 (2017-06-02)mysql153

在mysql中遇到一个大表,大概有17G左右,删除这张表。通常的删除操作可以通过delete、drop、truncate操作,但是有可能导致mysql hang住,必须使用些特殊的方法。

1、建立硬链接

找到mysql的数据文件,找到这张表在硬盘上的名称,我的是tmplst.frm和tmplst.ibd,通过查看tmplst.ibd的大小到了17G左右,这就是无法删除的原因。其中tmplst是表名。

在这个文件夹下,为tmplst,frm和tmplst.ibd分别建立硬链接

ln tmplst.frm tmplst.frm.h
ln tmplst.ibd tmplst.ibd.h

这样的话就成功的建立了两个硬链接。

创建一个硬链接的好处就是:

硬链接就是增加了对文件的引用,只有对磁盘上文件的引用完全没有了的话,这个文件才能是删除的。当我们执行drop table 的时候,实际上只是删除了对tmplst.ibd的一个文件引用,我们 tmplst.ibd.h对物理文件的引用还是存在的,就不会执行OS级别的删除操作,就不会大量的IO操作。这种对线上mysql的影响降到很低。

2、删除表

在mysql中使用drop命令删除表

drop table tmplst;

这时发现删除非常快,不到一分钟删除完成。

3、删除硬链接文件

在硬盘上删除新建的硬链接。分别删除tmplst.frm.h和tmplst.ibd.h

rm -rf tmplst.frm.h
rm -rf tmplst.idb.h

最后,成功了删除一张大表(17G左右)。


这样第三步还是会执行大量的io操作,我们可以用下面的办法继续优化


4.使用coreutils工具集执行OS级别的文件删除

wget ftp://alpha.gnu.org/gnu/coreutils/
tar xf coreutils-8.0.tar.xz
cdcoreutils-8.0
./configure
make  && make install

清理脚本如下:

#!/bin/bash
TRUNCATE=/usr/local/bin/truncate
#从2835MB(2.7GB差不多在2768MB)开始每次删除100MB,最后如果脚本truncate后还剩下部分文件,可以使用rm删除
fori in `seq 2768 -100 10 `; do
 $TRUNCATE -s ${i}M  /bdata/data/nowdb2/test/t2.ibd_hdlk
 sleep 1
done

执行完上面的脚本后,还剩下35MB的空间,如下图。这个小文件我们直接使用rm删除即可。


版权声明:本文由PHP面试资料网发布,如需转载请注明出处。
分享给朋友:

相关文章

Mysql B+树索引常见面试题

Mysql B+树索引常见面试题

概念一个经典的B+树索引数据结构见下图:B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当...

mysql中count(x)到底慢不慢

总结MyISAM 表不支持事务,但是count(*) 很快,因为他直接记录了一个总数MyISAM在统计表的总行数的时候会很快,但是有个大前提,不能加有任何WHERE条件。这是因为:MyISAM对于表的...

mysql中数据页的相关概念

mysql中数据页的相关概念

概念在 InnoDB 存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(p...

mysql中Join的实现原理及优化思路

mysql中Join的实现原理及优化思路

实现原理在MySQL中,只有一种 Join 算法,就是大名鼎鼎的 Nested Loop Join,他没有其他很多数据库所提供的 Hash Join,也没有 Sort Merge Join。顾名思义,...

mysql中一条sql语句是如何执行的

架构mysql是一种单进程多线程的架构,mysql server层的核心组件:连接器、查询缓存、分析器、优化器、执行器一条sql语句是如何执行的客户端发送一条查询给服务器服务器先检查查询缓存,如果命中...

mysql中order by的实现与优化

mysql中order by的实现与优化

概念在 MySQL 中,ORDER BY 的实现有如下两种类型: ◆ 一种是通过有序索引而直接取得有序的数据,这样不用进行任何排序操作即可得到满足客户端 要求的有序数据返回给客户端; ◆ 另外一种则需...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。