mysql 存储引擎和索引

发布时间 2023-05-17 13:55:17作者: 黄光跃

存储引擎

引擎 特性 文件
InnoDB 默认,支持事务,支持外键,支持行锁和表锁 .frm 文件存储表结构
.ibd 文件存储数据和索引
MyISAM 不支持事务,不支持外键,只支持表锁不支持行锁
专门维护了一个常量保存每个表的总记录数(count 很快)
MyISAM 强调的是性能,所以性能上优于InnoDB,但安全性和并发性较低
.frm 文件存储表结构
.MYD 文件存储数据
.MYI 文件存储索引
Memory 数据存在内存中,所以性能上来看是最好的,缺点也很明显,一旦宕机数据就没了 只有表结构文件(只有 frm 文件)

索引

索引是一种数据结构,目的是提高检索数据的效率,减少磁盘I/O,也是一个文件存放在磁盘中(Memery 这种引擎数据都在内存中,索引也不可能有实质的文件了)
有利有弊,索引也是需要维护的,所以索引越多维护的成本也增大

按照不同的规则可以划分出不同的类型,比如按照字段个数:单列索引,复合索引;是否主键:主键索引,非主键索引。按照索引的数据结构上又能分为:聚簇索引和非聚簇索引

InnoDB 聚簇索引