Mysql引擎

MySQL最常用的两种存储引擎

存储引擎是数据库的核心,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,根据实际的需求使用合适的存储引擎可以更好的提升数据库的使用效率。

1. 存储引擎的查看

SHOW ENGINES;
Mysql引擎

2. MySQL默认的引擎 InnoDB

InnoDB是默认的数据库存储引擎,他的主要特点有:

  1. InnoDB 支持事务(ACID),且支持四种隔离级别(读未提交、读已提交、可重复读、串行化),默认的为可重复读。
  2. 支持行锁且默认锁就是行锁,行锁相对表锁粒度更小,在进行插入、更新、删除操作时不会锁定全表,所以支持的并发率也高,更适合处理有大量增、删、改的场景。
  3. 支持外键约束,外键约束其实降低了表的查询速度,但是增加了表之间的耦合度。
  4. 存在缓冲池管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度。
  5. 支持自增长列,通过auto_increment实现。
  6. 不支持全文搜索,同时启动也比较的慢,不会保存表的行数,所以当进行 select count(*) from table 指令的时候,需要进行扫描全表。
  7. InnoDB是聚集索引,数据都保存在聚集索引的叶子节点中,只要找到叶子节点就可以直接获取到数据,查询效率高。
3. MyIASM 引擎
  1. 不支持事务,无法回滚数据。
  2. 不支持行锁,默认为表锁,锁粒度大,在进行插入、更新、删除操作时会锁定全表,所以并发率低。
  3. 不支持外键。
  4. 只会缓存索引,不会缓存数据。
  5. 支持全文搜索,保存了表的行数,在进行select count(*) from table 指令的时候不会扫描全表,直接读取保存的行数。
  6. MyIASM为非聚集索引,索引和数据文件是分离的,非聚集索引的叶子节点存储的是指向数据文件的指针,查询时先通过索引找到叶子节点中的指针,再通过指针去获取指向的具体数据,查询效率低。