InnoDB表空间组成结构
2017-03-10刘进京
网络安全和信息化 2017年2期
InnoDB的表空间分为共享表空间和独立表空间,对于前者来说,数据存放在名为“ibdata1”的文件中。对于后者来说,各数据表的数据分散存储后缀为“.idb”的不同文件中。在表空间文件中包含一行行的记录,记录是表空间的最小组成元素,这些记录保存在页(Page)当中。页包括Page header、一行行的记录、Page trailer等部分组成。InnoDB引擎在运作过程中,相应的表空间和InnoDB Buffer Pool是紧密相关的,硬盘中的表空间文件和内存中的缓存结构是很相似的,即均以页为单位来保存数据。页容量通常为16KB,在一页中会存储多行记录。64个页可以组成一个Extent,最多四个 Extent可以组成一个段(Segment)。
例如,对于InnoDB引擎的索引文件来说,一般由前置索引和后置索引组成,前者和后者都会消耗一个Extent。在初始阶段,在段中可能会分配一些页,之后会逐渐扩张到一个Extent。随后会逐步添加多个Extent。表空间文件由多个段组成,在其中包括前置索引、后置索引、RollBack信息等,因此,从组成结构上说,表空间文件实际上由众多的页组成的。针对表空间文件的操作,本质上是对页进行操作,例如,将多个页读取到缓存中,将页中缓存中写回表空间文件等。在MySQL数据库运转过程中,页的读写操作在频繁地进行。所以,表空间文件的损坏,也经常发生在此环节中。