顺序读和InnoDB的数据组织

简介: 【7月更文挑战第7天】自增主键优化顺序读:保证数据物理排序,提升范围查询效率。InnoDB引擎中,主键决定数据在页的存储。当插入的数据引起页分裂,如从1、2、3、5、6、7插入4,会导致相邻逻辑页在磁盘上可能分散,影响性能。了解页结构深化数据库知识,面试时可根据情况深入讨论。

此外,我们还可以从一个比较新奇的角度,解释为什么要使用自增主键,关键词就是顺序读

自增主键还有一个好处,就是数据会有更大的概率按照主键的大小排序,两条主键相近的记录,在磁盘上的位置也是相近的。那么可以预计,在范围查询的时候,我们能够更加充分地利用到磁盘地顺序读特性

如果希望在面试官面前树立在数据库方面积累比较多的形象,就要进一步解释数据库的页分裂究竟是怎么回事,这时候可以用MySQL InnoDB引擎来举例子。

MySQL的InnoDB引擎,每一页上按照主键的大小放着数据。假如说我现在有一个页放着主键1、2、3、5、6、7这六行数据,并且这一页已经放慢了。现在我要插入一个ID为4的行,那么InnoDB引擎就会发现,这一页已经放不下4这行数据了,于是逼不得已,就要把原本的页分成两页,比如1、2、3放到一页,5、6、7放到另外一页,然后把4放到第一页。
这种页分裂会造成一个问题,就是虽然从逻辑上来说 1、2、3 这一页和 5、6、7 这一页是邻近的两个页,但是在真实存储的磁盘上,它们可能离得很远。

到这一步,你的回答就已经算是可以了。面试官如果想要进一步探讨,那么可能会继续追问 InnoDB 引擎上的页这种数据结构有什么字段,各自有什么用处。如果你现在是临时抱佛脚准备面试,那么就没必要去背这些八股文。但是如果你只是平常在学习技术知识,想要夯实基础,那么我建议你深入去看看这部分内容。

目录
相关文章
|
存储 算法 关系型数据库
InnoDb行格式、数据页结构、索引底层原理和如何建立索引
InnoDb行格式、数据页结构、索引底层原理和如何建立索引
504 0
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
485 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
存储 算法 关系型数据库
【MySQL技术内幕】4.4-InnoDB数据页结构
【MySQL技术内幕】4.4-InnoDB数据页结构
525 1
|
存储 关系型数据库 MySQL
InnoDB一棵B+树可以存放多少行数据?
InnoDB一棵B+树可以存放多少行数据?
327 0
InnoDB一棵B+树可以存放多少行数据?
|
存储 算法 关系型数据库
第21章_InnoDB数据页结构
第21章_InnoDB数据页结构
218 0
|
存储 关系型数据库 MySQL
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
MySQL使用InnoDB引擎时一张表最大可以储存数据大小为 64TB,那为什么当表中的单行数据达到16KB时,这张表只能储存一条数据?
616 0
|
存储 关系型数据库 MySQL
关于InnoDB表数据和索引数据的存储
弄清楚InnoDB表数据存储的细节
487 0
关于InnoDB表数据和索引数据的存储
|
存储 关系型数据库 MySQL
第5章 【MySQL】InnoDB数据页结构
第5章 【MySQL】InnoDB数据页结构
246 0
|
存储 SQL 关系型数据库
InnoDB数据页什么时候合并(1)
InnoDB数据页什么时候合并
202 0
|
存储 关系型数据库 MySQL
MySQL:如何快速的查看Innodb数据文件(1)
MySQL:如何快速的查看Innodb数据文件
415 0
MySQL:如何快速的查看Innodb数据文件(1)