前言

在MySQL <= 5.6.5,innodb_file_per_table默认为0,即InnoDB表的数据都会存储在共享表空间ibdata中,除此之外ibdata还存储着数据字典、双写缓冲区、undo log等。

当innodb_file_per_table为0时,ibdata会不断增大,有时会导致磁盘空间不足。通常是InnoDB表的数据导致的,undo log是次要原因。
因为undo log的增加通常是在事务较为繁忙的时候,且事务中做了大量的更新操作,但是undo log占用的空间却可以被重用。InnoDB的purge线程就是负责清理不需要的undo log空间以供其他的undo log使用。

那么为何InnoDB表的数据会成为ibdata增大的主要原因?因为InnoDB表的数据被delete之后的空间是无法被InnoDB重用的,需要人为干预处理= =

阅读原文 »

3 1 收藏


直接登录

推荐关注