MyISAM和InnoDB的区别

MyISAM和InnoDB的区别

mysql5.5版本后将InnoDB作为默认的存储引擎,之前都是用MyISAM,两种的区别在于以下五点:

1.数据的存储结构不同

  • MyISAM有三个文件:
    • .frm:表结构的定义文件
    • .MYD:数据文件
    • .MYI:索引文件
  • InnoDB有两个文件:
    • .frm文件:存储为表结构文件
    • .ibd:存储的是数据和索引文件
  • 由于MyISAM的数据和索引是分开的,因此在索引查找的时候,MyISAM的叶子节点存储的是数据所在的地址,而不是数据

2.存储空间的消耗不同

  • MyISAM可能会被压缩,存储空间变小,支持三种存储模式,静态表、动态表、压缩表
  • InnoDB需要更多的内存和存储,会在主内存中建立专有的缓冲区,用来去告诉缓冲数据和索引,其所在表都保存在同一个数据文件中,其大小只受限于操作系统的文件大小,一般是2G

3.对事务的支持不同

  • MyISAM注重的是效率,每次查询都具有原子性,执行速度比InnoDB快一些,但不支持事务操作
  • InnoDB支持外键等高级数据库的操作,事务提交,事务回滚,安全性高!

4.对锁的支持不同

  • 如果执行大量的查询,MyISAM更好,在执行增删改的时候,需要锁定整个表,效率更低
  • InnoDB支持行级锁,在删除插入的时候只需要锁定操作行就行

5.对外键的支持不同

  • MyISAM不支持外键
  • InnoDB支持外键

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