mylsam
使用mysam存储引擎,会在磁盘中存储成三个文件
- frm文件:存储表的定义数据。
- MYD文件:存放具体记录的数据。
- MYI文件:存储索引。仅保存记录所在页的指针,索引的结构是B+树结构。
查询时通过MYI的B+树结构来查找记录。支持全文索引、B树索引和数据压缩
支持数据的类型也有三种:
静态固定长度表
这种方式的优点在于存储速度非常快,容易发生缓存,而且表发生损坏后也容易修复。缺 点是占空间。这也是默认的存储格式。
动态可变长表
优点是节省空间,但是一旦出错恢复起来比较麻烦。
压缩表
上面说到支持数据压缩,说明肯定也支持这个格式。在数据文件发生错误时候,可以使用 check table工具来检查,而且还可以使用repair table工具来恢复。
不支持事务,存储速度快,如果你的读写操作允许有错误数据的话,只是追求速度,可以选择这个存储引擎。
InnoDB
InnoDB是默认的数据库存储引擎,他的主要特点有:
(1)可以通过自动增长列,方法是auto_increment。
(2)支持事务。默认的事务隔离级别为可重复度,通过MVCC(并发版本控制)来实现 的。
(3)使用的锁粒度为行级锁,可以支持更高的并发;
(4)支持外键约束;外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。
(5)配合热备工具可以支持在线热备份;
(6)缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的 速度;
(7)数据的物理组织形式是聚簇表。所有的数据按照主键来组织。数据和索引放在一块, 都位于B+树的叶子节点上;
InnoDB的存储表和索引的两种形式:
(1)共享表空间存储:所有的表和索引存放在同一个表空间中。
(2)多表空间存储:表结构放在frm文件,数据和索引放在IBD文件中。分区表的话, 每个分区对应单独的IBD文件,分区表的定义可以查看我的其他文章。使用分区表的 好处在于提升查询效率。