MySQL的常用引擎
- InnoDB
InnoDB的存储文件有两个,后缀名分别是.frm和.idb,其中.frm是表的定义文件,而idb是数据文件。
InnoDB中存在表锁和行锁,不过行锁是在命中索引的情况下才会起作用。
InnoDB支持事务,且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读;而在Oracle数据库中,只支持串行化级别和读已提交这两种级别,其中默认的为读已提交级别。
- Myisam
Myisam的存储文件有三个,后缀名分别是.frm、.MYD、MYI,其中.frm是表的定义文件,.MYD是数据文件,.MYI是索引文件。
Myisam只支持表锁,且不支持事务。Myisam由于有单独的索引文件,在读取数据方面的性能很高 。
- 存储结构
InnoDB和Myisam都是用B+Tree来存储数据的。
MySQL的数据、索引存储结构
- 数据存储的原理(硬盘)
信息存储在硬盘里,硬盘是由很多的盘片组成,通过盘片表面的磁性物质来存储数据。把盘片放在显微镜下放大,可以看到盘片表面是凹凸不平的,凸起的地方被磁化,代表数字1,凹的地方没有被磁化,代表数字0,因此硬盘可以通过二进制的形式来存储表示文字、图片等的信息。
硬盘有很多种,但是都是由盘片、磁头、盘片主轴、控制电机、磁头控制器、数据转换器、接口、缓存等几个部分组成。
所有的盘片都固定在一个旋转轴上,这个轴即盘片主轴。
所有的盘片之间是绝对平行的,在每个盘片的盘面上都有一个磁头,磁头与盘片之间的距离比头发丝的直径还小。
所有的磁头连在一个磁头控制器上,由磁头控制器负责各个磁头的运动,磁头可沿盘片的半径方向移动,实际上是斜切运动,每个磁头同一时刻必须是同轴的,即从正上方往下看,所有磁头任何时候都是重叠的,由于技术的发展,目前已经有多磁头独立技术了,在此不考虑此种情况。
盘片以每分钟数千转到上万转的速度在高速运转,这样磁头就能对盘片上的指定位置进行数据的读写操作。
由于硬盘是高精密设备,尘埃是其大敌,所以必须完全密封。