MySQL数据文件不会缩小

Mid*_*hat 8 mysql

我的MySQL数据库的ibdata1文件随着时间的推移增长到大约32GB.最近我从我的数据库中删除了大约10GB的数据(并重新启动了mysql以获得良好的测量结果),但该文件不会缩小.有没有办法减少这个文件的大小

Dan*_*oap 11

无论您删除多少数据,InnoDB表空间的文件大小都不会自动减少.

尽管需要付出很多努力,但您可以做的是通过设置为每个表创建一个表空间

innodb_file_per_table
Run Code Online (Sandbox Code Playgroud)

关于这一点的很长一部分是,您需要从mysql服务器导出所有数据(设置新服务器会更容易),然后重新导入数据.而不是一个单独的ibdata1文件保存每个表的数据,你会发现很多文件被调用tablename.ibd,只保存一个表的数据.


然后:

然后,当您从表中删除大量数据时,可以让mysql通过发出重新创建数据文件

alter table <tablename> engine=myisam;
Run Code Online (Sandbox Code Playgroud)

切换到MyIsam(并删除此表的InnoDB数据文件)然后

alter table <tablename> engine=innodb;
Run Code Online (Sandbox Code Playgroud)

重新创建表.