一 ibdata1相关
InnoDB中有共享表空间和独立表空间的概念。共享表空间就是ibdata1,独立表空间放在每个表的.ibd(数据和索引)和.frm(表结构)为后缀的文件中。单独的表空间只存储该表的数据,索引和插入缓冲的BITMAP等信息,其余还放在共享表空间中
1、ibdata1文件介绍
ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、撤销记录、修改buffer和双写buffer。
ibdata1存储了Data dictionary,Double write buffer,Insert buffer,Rollback segments,UNDO space,Forign key constraint system tables等
2、ibdata1暴涨的原因
ibdata1存放数据,索引和缓存等,是MYSQL的最主要的数据。所以随着数据库越来越大,表也会越大,这个无法避免的。如果时间长了,越来越大。
具体原因有下面几个:
有大量并发事务,产生大量的undo log;
有旧事务长时间未提交,产生大量旧undo log;
file i/o性能差,purge进度慢;
初始化设置太小不够用;
32-bit系统下有bug。
3、ibdata1问题背景
当my.cnf选项innodb_file_per_table = 0时,在ibdata1文件中还需要存储InnoDB表数据&索引。ibdata1文件从5.6.7版本开始,默认大小是12MB,而在这之