时间:2021-05-24
MySQL的Bug之一:InnoDB ibdata1 never shrinks after data is removed
问题描述
当innodb引擎使用单个文件进行存储的时候,当对数据库中数据进行删除的时候,文件的大小并不会发生变化,意味着文件将会越来越大并且即使删除也没办法 让其释放磁盘的空间。
验证过程
创建一个测试使用的表,如下创建好t这样的一个表。
创建简单的存储过程来批量的插入数据。
查看开始前的文件的大小
当批量插入接近十万的数据后
然后进行删除操作
占用磁盘空间并未减少
解决方案
两种方式:
1. 先备份后删除然后进行导入
mysqldump -uxxx -pxxx --all-databases > db.sql service mysql stop rm ibdata rm ×log文件 service mysql start mysql -uxxx -pxxx < db.sql2. 把表设置为单表存储的形式,这样每个表中的数据单独存储,在删除数据的时候,会随着数据的删除而释放存储空间。
set global innodb_file_per_table = on总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
问题:mysql存放的数据文件,分区容量较小,目前已经满,导致mysql连接不上,解决方案:1、删除分区里一个不需要用的数据,如:日志文件等(解决不了根本问题)
数据文件可以删除。数据文件是指在大容量复制操作中,将数据从向外大容量复制操作传输到向内大容量复制操作的文件。 在大容量复制操作中,将数据从向外大容量复制操作传
migrate文件记录了每一次数据迁移的改变解决方法:重建数据库1.删除数据库错误方法:pythonmanage.pyshellfromapp.modelsim
前言前几天导入一个大容量dmp数据文件,报一个600错误,咨询网上的解决方法,按上面的处理一圈也没有整好,最后咨询组里一个大神,出现此错误思路是,单个数据文件大
使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件。原路径:/var/lib/my