Mysql的存储引擎

2020-09-13  本文已影响0人  云中人山

Mysql的存储引擎


InnoDB

InnoDB采用MVCC来支持高并发,并且实现了四个标准的隔离级别,其默认级别是REPEATBALE READ(可重复读), 并通过间隙锁(next-key locking)策略防止幻读的出现。

间隙锁使得InnoDB不仅仅锁定查询涉及的行,还会对索引的间隙进行锁定,防止幻影行的插入。

InnoDB标的基于聚簇索引建立的,其索引结构和Mysql的其他存储引擎有很大的不同,聚簇索引对主键查询有很高的性能,不过它的二级索引必须包含主键列,因此主键应该尽可能的小。

InnoDB内部做了许多优化,包括从磁盘读取数据时采用的可预测性预读,能够自动在内存中创建hash索引以加速读操作的自适应哈希索引以及能够加速插入操作的插入缓冲区

InnoDB的数据存储在表空间中,表空间是由InnoDB管理的一个黑盒子,由一系列的数据文件组成。

优势:

四大特性

MyISAM

MyISAM提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但MyISAM不支持事务和行级锁,而且有一个毫无疑问的缺陷是崩溃后无法安全恢复。

对于只读的数据,或者表比较小,可以忍受修复操作,则依然可以继续使用MyISAM

MyISAM会将表存储在两个文件中:数据文件和索引文件,分别以.MYD和.MYI为扩展名。

特性:


区别

MyISAM InnoDB
事务 不支持 支持事务
外键 不支持 支持
索引结构 B+树,索引是数据文件的指针 B+树,聚簇索引
count(*) 变量存储 全表扫描
全文索引 支持 5.7版本后支持
表锁(读锁+写锁 并发插入) 表、行级锁
主键 可以没有 必须有
存储 索引数据分开(frm myd myi) 表空间(frm, ibd)
压缩 支持压缩 不支持
上一篇 下一篇

猜你喜欢

热点阅读