mysql收缩空间的问题

查看:101
本文介绍了mysql收缩空间的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

今天转移数据库(从一个数据库到另一个数据库),转移了一部分之后发现硬盘快满了,于是就把就旧的数据库里已经转移完成的表删除了。
我是先TRUNCATE table_name,发现空间没有释放,又DROP TABLE table_name,发现空间还是没有释放。

我去网上搜了一下,发现收缩空间的命令都是针对表的,比如OPTIMIZE TABLE table_name。
我想请问一下,还有别的办法收缩空间吗?

解决方案

InnoDB引擎的特性就是这样的。
占用空间的文件有bin-log文件(二进制日志)和ibdata1(数据文件,表空间就是在这里的)
还有一些其他日志(ib_logfile0)redo-log和undo-log。

你执行TRUNCATE掉了数据,并不会对上面这些文件大小产生影响(减小),反而会增大,要纪录你这个TRUNCATE操作。数据既使被删除了,ibdata1空间里也不会被删除的,因为要删除里面的数据,要移动大量磁盘空间。innodb只是标志那些数据页是可以被再次使用的,并没有删除这块空间。通常mysql一启动,会会占用几个G的ibdata1 ibdata2。先分配一块大的磁盘,再慢慢使用,数据在物理上连续(效率高)。避免一直分配磁盘空间,产生很多碎片。

除非你把整个data数据目录目录清除(相当于重装mysql),再重新导入数据。

磁盘是很便宜,挂几块大磁盘就行了。磁盘都没有,玩什么数据库。

这篇关于mysql收缩空间的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆