mysql主要引擎区别

简介

通过梳理了解 mysql innodb 和 myisam 两个主要存储引擎的区别。

  1. 事务
    1. innodb 管理事务表,支持4个隔离级别,如果应用需要进行大量的写操作时推荐使用,可以有效提高多用户的并发操作能力。
    2. myisam 管理非事务表,支持高效的存储和检索,以及全文的搜索。如果应用需要进行大量的读操作时候推荐使用。
  2. 索引
    1. innodb
      1. 使用聚合索引,一个数据库需要在本地存储2个文件,分别为:表结构和数据索引文件
      2. 使用的是B+TREE数据结构,子节点保存的是行数据
      3. 本地存储文件较小
    2. myisam
      1. 使用非聚合索引,一个数据库需要在本地存储3个文件,分别为:表结构文件,索引文件和数据文件
      2. 使用的是B+TREE数据结构,子节点保存的是行指针,需要根据指针回原表查询获取行数据
      3. 本地存储文件较大
    1. innodb 默认采用行锁,但是查询如果没有使用索引或者索引失效,则会自动将行锁转换为表锁
    2. myisam 默认采用表锁
  3. 使用场景
    1. innodb
      1. 需要事务
      2. 数据需要进行频繁的更新
      3. 并发度高
      4. 对数据一致性要求较高
    2. myisam
      1. 不需要事务
      2. 数据不需要进行频繁更新
      3. 并发度低
      4. 对数据一致性要求较低
0%