ITPub博客

首页 > 数据库 > MySQL > MySQL5.7新特性之数据碎片整理

MySQL5.7新特性之数据碎片整理

原创 MySQL 作者:StevenBeijing 时间:2017-09-05 17:51:09 0 删除 编辑
  对于innodb存储引擎,例如删除一行,这些行只是标记为“已删除”,而不是真正从索引中物理删除了,因而空间也没有真正得到释放。Innodb的Purge线程会异步的来清理这些没有用的索引键和行,但是依然没有把这些释放出来的空间给系统用,因而会导致页面中存在很多空洞。
  MySQL5.7之前的版本中,需要使用OPTIMIZE TABLE或者ALTER TABLE TABLE_NAME ENGINE=InnoDB(比如为独立表空间),改方法相当于新建一个表,进行一次导出/导入,然后删除旧表。
  MySQL5.7版本中,合并了Facebook的碎片整理代码,需要把下面的配置加到my.cnf配置文件中:
[mysqld]
innodb_defragment=1
#打开或者关闭InnoDB碎片整理算法。
innodb_defragment_n_pages=16
#一次性读取多少个页面进行合并整理操作。范围是2-32,默认值是7
  这样配置之后,新的碎片整理功能就会替代原有的OPTIMIZE TABLE算法,加快了碎片整理的时间,也不会有新的表生成。
  以下是状态参数说明:
Innodb_defragment_compression_failures:整理碎片时候重新压缩页面失败的次数
Innodb_defragment_failures:整理操作失败的次数(如果有可压缩的页面)
Innodb_defragment_count:整理操作的次数

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30135314/viewspace-2144541/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-02-10

  • 博文量
    244
  • 访问量
    325270