MySQL InnoDB存储引擎(五):表空间
增加InnoDB系统表空间大小
增加InnoDB系统表空间大小的最简单方法就是初始化配置为自动扩展(autoextend)。 在表空间定义中为最后一个数据文件指定autoextend属性,这样InnoDB在空间不足时以64MB的增量自动增加该文件的大小。 可以通过设置innodb_autoextend_increment系统变量的值来更改增量大小(单位为MB)。为了扩展系统表空间,开发人员可通过添加新的数据文件:
关闭数据库;
若之前使用了autoextend,可以将其替换为明确的数据文件名及文件大小,如:
innodb_data_home_dir =# beforeinnodb_data_file_path = /ibdata/ibdata1:988M:autoextend# afterinnodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend 启动数据库。
减小InnoDB系统表空间大小
在InnoDB中,开发人员并不能直接从系统表空间中删除数据文件,为了减小系统表空间,可以执行如下操作:
使用mysqldump备份所有InnoDB表数据;
关闭数据库;
删除所有表空间文件(*.ibd文件),包括ibdata和ib_log等文件,再删除所有InnoDB表文件(*.frm文件);
配置新的表空间,启动数据库,再导入之前dump的文件。
改变重建日志文件(Redo Log)的数量及大小
若开发人员想改变InnoDB重建日志文件的数量及大小,可以执行如下操作:
正常关闭数据库;
修改my.cnf文件,配置innodb_log_files_in_group(修改文件数量,文件名通常为ib_logfile0, ib_logfile1, ib_logifleN)和(文件大小,若之前有日志文件大小不一致,会先写Checkpoint,再创建新的日志文件);