InnoDB存储引擎的关键特性包括插入缓冲、两次写(doublewrite)、自适应哈希索引(adaptivehashindex)。这些特性为InnoDB存储引擎带来了更好的性能和更高的可靠性。插入缓冲是InnoDB存储引擎关键特性中最令人激动的。不过,这个名字可能会让人认为插入缓冲是缓冲池中的一个部分。其实不然,InnoDB缓冲池中有InsertBuffer信息固然不错,但是InsertBuffer和数据页一样,也是物理页的一个组成部分。主键是行唯一的标识符,在应用程序中行记录的插入顺序是按照主键递增的顺序进行插入的。因此,插入聚集索引一般是顺序的,不需要磁盘的随机读取。比如说我们按下列SQ
1
两次写(InnoDBDoubleWrite)是Innodb中很独特的一个功能点。因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在某一个页面(这条记录最终被插入的位置)的多个偏移位置写入某个长度的值,例如页头的记录数、槽数、页尾槽数据、页中的记录值等。这些本是一些物理操作,而Innodb为了节省日志量及其它原因,设计为逻辑处理的方式,即在一个页面上插入一条记录时,对应的日志内容包括表空间号、页面号、将被记录的各个列的值等内容,在真正物理插入的时候,才会将日志逻辑操作转换为前面的物理操作。先有逻辑日志,再有物理操作,但是这样需要有一个前提,就是物理操作的页面是正确的。如
2021-02-24 14:04:04 161KB 详解MySQL两次写的设计及实现
1