我的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)
重新创建表.