码迷,mamicode.com
首页 > 其他好文 > 详细

线网环境如何删除大表

时间:2020-06-23 19:33:05      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:常用   ica   nts   ace   而且   similar   ext4   name   bsp   

线网环境如何删除大表
周万春


比如一张大表,底层ibd文件大约是50G-100G,或者你理解成一张大表200G以上吧。哈哈!!!

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

在drop table的时候,所有进程不管是DDL还是DML都被hang起,直到drop结束才继续执行;
这是因为InnoDB会维护一个全局独占锁(在table cache上面),直到drop table完成才释放。
在我们常用的ext3,ext4,xfs,ntfs文件系统,要删除一个大文件(几十G,甚至几百G)还是需要点时间的。
下面我们介绍一个快速drop table的方法,不管多大的表,InnoDB都可以很快返回,表删除完成。

至于原理: 就是利用os hard link的原理,
当多个文件名同时指向同一个inode时,这个inode的引用数N>1,删除其中任何一个文件名都会很快。
因为其直接的物理文件块没有被删除,只是删除了一个指针而已。
当inode的引用数N=1时,这时候再去删除文件需要去把这个文件相关的所有数据块清除,所以会比较耗时。

开始科普Linux软硬链接知识:
    Linux系统中的“快捷方式”。
    在Windows系统中,快捷方式就是指向原始文件的一个链接文件,可以让用户从不同的位置来访问原始的文件;原文件一旦被删除或剪切到其他地方后,会导致链接文件失效。
    但是,这个看似简单的东西在Linux系统中可不太一样。
    在Linux系统中存在硬链接和软连接两种文件。
    硬链接(hard link):可以将它理解为一个“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的inode连接数就会增加1;而且只有当该文件的inode连接数为0时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件inode的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,我们不能跨分区对目录文件进行链接。
    软链接(也称为符号链接[symbolic link]):仅仅包含所链接文件的路径名,因此能链接目录文件,也可以跨越文件系统进行链接。但是,当原始文件被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

    ln命令中可用的参数以及作用
    参数    作用
    -s      创建“符号链接”(如果不带-s参数,则默认创建硬链接)
    -f      强制创建文件或目录的链接
    -i      覆盖前先询问
    -v      显示创建链接的过程


跑truncate table,4亿条数据会不会造成长时间锁表呢?有什么更好的方法吗?
最好是create新表,然后交叉rename对调,再drop/truncate table或其他方式清除数据。


一、可操作步骤:
创建新的tmp表,正式表与tmp表表名交换(注意在一个SQL里完成,并锁表)
对tmp表创建硬链接 ln tmp.ibd tmp.ibd.hdlk
在mysql中删除表tmp(truncate / drop都行)
然后找个业务不繁忙的时间删除数据文件或者用coreutils 的truncate慢慢搞。
    truncate -s 1024 * 1024 * 4 filename 或者 rm -rf filename


二、关于truncate table,官档解释:
Logically, TRUNCATE TABLE is similar to a DELETE statement that deletes all rows, or a sequence of DROP TABLE and CREATE TABLE statements.
When a table is truncated, it is dropped and re-created in a new .ibd file, and the freed space is returned to the operating system.

 

线网环境如何删除大表

标签:常用   ica   nts   ace   而且   similar   ext4   name   bsp   

原文地址:https://www.cnblogs.com/zhouwanchun/p/13183464.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!