在MySQL中如何有效的删除一个大表?
A 答案
在Oracle中对于大表的删除可以通过先TRUNCATE + REUSE STORAGE参数,再使用DEALLOCATE逐步缩小,最后DROP掉表。在MySQL中,对于大表的删除,可以通过建立硬链接(Hard Link)的方式来删除。建立硬链接的方式如下所示:
ln big_table.ibd big_table.ibd.hdlk
建立硬链接之后就可以使用DROP TABLE删除表了,最后在OS级别删除硬链接的文件即可。
为什么通过这种方式可以快速删除呢?当多个文件名同时指向同一个INODE时,此时这个INODE的引用数N>1,删除其中任何一个文件都会很快。因为其直接的物理文件块没有被删除,只是删除了一个指针而已。当INODE的引用数N=1时,删除文件时需要把与这个文件相关的所有数据块清除,所以会比较耗时。
http://mp.weixin.qq.com/s/Vm5PqNcDcITkOr9cQg6T7w |
● 本文作者:小麦苗,只专注于数据库的技术,更注重技术的运用
● 作者博客地址:http://blog.itpub.net/26736162/abstract/1/
● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解
● 版权所有,欢迎分享本文,转载请保留出处
● QQ:646634621 QQ群:618766405
● 题目解答若有不当之处,还望各位朋友批评指正,共同进步
长按下图识别二维码或微信扫描下图二维码来关注小麦苗的微信公众号:xiaomaimiaolhr,学习最实用的数据库技术。
本文分享自微信公众号 - DB宝(lhrdba)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
标签:删除,DB,MySQL,INODE,链接,大表 来源: https://blog.51cto.com/lhrbest/2705764
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。