mysql存储引擎 innodb 和myisam区别

谈谈mysql存储引擎 innodb和myisam区别!

他们两区别点非常多,记忆挺困难点。但核心设计理念不同。innnodb 更多考虑事务,做了数据一致性和原子性设计。而,myisam不支持事务仅需要考虑更快更好读取数据。

myisam

设计出发点

不支持事务,更多考虑数据读取性能

innodb

设计出发点

支持事务,更多考虑数据一致性原子性

myisam 

特点

核心特点不支持事务,所以有以下特点

  1. 主键不是必须设置  
  2. 不支持外键
  3.  仅支持表锁,不支持行锁
  4. 索引不同
    1. 有3个文件。 表结构、数据文件、索引文件
    2. b+树叶子节点存储数据文件指针
    3. 二级索引叶子节点存储数据文件指针

更好的读取数据性能

  1. 有一个变量保存表行总数。查询select count from table 将取出该值。
  2. 支持全文检索

innodb 

特点

核心特点支持事务,更多考虑数据一致性原子性。所以有以下特点

  1.  必须要有主键,若未设置。mysql将为我们生成6byte长度的int类型的字段作为主键
  2. 支持外键
  3. 支持表锁还是支持行锁、间隙锁
  4. 索引不同
    1. 有2个文件,表结构、索引文件(索引和数据)
    2. 聚簇索引叶子节点存储主键id,非聚簇索引存储聚簇索引主键

读取数据性能不如myisam

1. 每条sql都自成一个事务,自动提交。有开销

2. 没有变量保存表总数。

   

你可能感兴趣的:(mysql,数据库,java)