记一次Mysql表空间优化经过(ibdata1瘦身)
< 返回列表时间: 2019-09-12来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
摘要
最近发现服务器磁盘空间不足,发现是数据库占用空间太大了,决定删一部分数据,释放一些空间。结果,发现删除数据之后,linux磁盘空间并没有释放,opimize 之后,依然没有释放。各种折腾之后才搞清楚,建立数据库的时候,使用的表空间是默认表空间,也就是所有的数据都会写入到 ibdata1中,这种情况删除表内容的数据并optimize是没有作用的,必须是单表独立文件才能优化空。
最后解决方法,备份所有表数据,删除1bdata1文件(这中间也做了一些尝试,差点数据库起不来了),设置 单表独立空间参数(innodb_file_per_table=1),重新导入数据,这之后,每一个表都是一个独立的文件,删除数据之后是可以用optimize优化的
顺带提一下分区表,也就是按照一定的逻辑分表规则(没有命中规则的插入会失败),将数据落入到不同的数据文件中,这样加载数据的时候可能会效率高一些,但是受一些索引文件大小的影响,分区表还是不能解决大数据问题。
以后有空把这篇博客补充完整。
经过

忽略_bak,原路径是 /var/lib/mysql

innodb_file_per_table=1
热门排行