在清理整个大表时,我们推荐使用drop,而非delete。但是如果表实在太大,即使是drop,也需要消耗一定的时间。这时可以利用linux的硬连接来快速删除大表,操作过程如下:
有一个大表test,共有4194304行数据,表空间文件大小为1.3G
mysql> select count(*) from test;
+----------+
| count(*) |
+----------+
|  4194304 |
+----------+
1 row in set (15.20 sec)
mysql> show create table test\G
*************************** 1. row ***************************
       Table: test
Create Table: CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.12 sec)
[root@master sam]# du -sh test.ibd
1.3G    test.ibd
12345678910111213141516171819
1.首先创建硬链接
ln test.idb test.idb.hl
ln test.frm test.frm.hl
12
2.删除test表
drop table test;
1
3.会发现,drop操作速度很快,原来的test.idb和test.frm不见了,但是硬链接文件还在,所以真正的释放磁盘空间,需要删除test.idb.hl和test.frm.hl。
快速删除原理:
首先硬链接创建的文件test.idb.hl,和源文件test.idb是指向同一个inode。而MySQL的drop操作,实际上是删除test表对应的.idb和.frm文件,也就是test.idb和test.frm。而linux在有硬连接的情况下,删除其中源文件会非常快,因为只是删除了inode的指针,实际的数据还存储在inode里。所以磁盘空间并没有真正释放,需要将硬连接文件也删除,才是真正的释放磁盘空间。
原文链接:https://blog.csdn.net/weixin_39004901/article/details/89842162

最新文章

  1. 分享一个UI与业务逻辑分层的框架(一)
  2. Comparison of SQL Server Compact, SQLite, SQL Server Express and LocalDB
  3. 抓包工具fiddler
  4. 转:Java NIO系列教程(六) File Channel
  5. IIS提示Server Application Unavailable
  6. deb、rpm、tar.gz三种Linux软件包的区别
  7. nginx+apache+php+mysql服务器集群搭建
  8. 各I/O模型 对应Web服务应用模型(select,poll,epoll,kevent,"/dev/poll")
  9. tcp窗口滑动以及拥塞控制
  10. Rabin-Karp字符串查找算法
  11. iframe访问子页面方法
  12. [转载] Tomcat架构分析
  13. 整理C++面试题for非CS程序猿——更新至【48】
  14. MySQL 5.7的多源复制
  15. 03-jQuery动画效果
  16. [Full-stack] 状态管理技巧 - Redux
  17. Spring 多数据源事务配置问题
  18. c数据结构第一个公式写程序计算给定多项式在给定点x处的值
  19. 你知道吗?undefined 与 null 的区别
  20. 在WPF中创建可换肤的用户界面

热门文章

  1. Python之路【第十篇】:Python面向对象之多态、多态性
  2. 浅谈Java Object
  3. Locust性能测试_参数关联
  4. JDK8源码解析 --- Long 类型
  5. vs配置opencv(只需一次)
  6. 阿里巴巴 Java 开发手册 (九) 异常日志
  7. java之spring mvc之Restful风格开发及相关的配置
  8. C# vb .net实现透视阴影特效滤镜
  9. Centos复制的系统无法获取IP地址
  10. webpack-dev-server提示css模块解析失败,但已经装了css-loader