MySQL存储引擎
InnoDB
InnoDB 的存储文件有两个,后缀名分别是.frm和.idb,其中.frm是表的定义文件,而.idb是数据文件。InnoDB 中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。InnoDB 支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读。
Myisam
Myisam 的存储文件有三个,后缀名分别是.frm、.MYD、.MYI,其中 .frm是表的定义文件,.MYD是数据文件,.MYI是索引文件。Myisam 只支持表锁,且不支持事务。Myisam 由于有单独的索引文件,在读取数据方面的性能很高 。InnoDB 和 Myisam 都是用 B+Tree 来存储数据的。
MySQL 的数据、索引存储结构
数据存储的原理(硬盘)
信息存储在硬盘里,硬盘是由很多的盘片组成,通过盘片表面的磁性物质来存储数据。盘片表面是凹凸不平的,凸起的地方被磁化,代表数字 1,凹的地方没有被磁化,代表数字 0,因此硬盘可以通过二进制的形式来存储表示文字、图片等的信息。硬盘是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。
数据读写的原理
硬盘在逻辑上被划分为磁道、柱面以及扇区。
操作系统以扇区形式将信息存储在硬盘上,每个扇区包括 512 个字节的数据和一些其他信息,一个扇区有两个主要部分:存储数据地点的标识符和存储数据的数据段。标识符就是扇区头标,包括组成扇区三维地址的三个数字:盘面号,柱面号,扇区号(块号)。数据段可分为数据和保护数据的纠错码(ECC)。在初始准

本文介绍了MySQL中的InnoDB和Myisam存储引擎,包括它们的数据文件、索引结构以及事务支持。同时,详细讲解了硬盘数据的存储原理,如磁道、柱面、扇区等,并探讨了预读机制。最后,深入讨论了B+Tree在MySQL索引中的应用,解释了InnoDB和Myisam的不同之处。
最低0.47元/天 解锁文章
1041





