【面试题】MySQL常用的储存引擎MYISAM和InnoDB的区别

MySQL常用的储存引擎




事务支持

MyISAM不支持事务,而InnoDB支持,并且默认是自动提交,在spring中的事务操作其实也是在操作数据库的事务;



文件储存结构

MYISAM:
在这里插入图片描述

  • role.frm:表结构文件
  • role.MYD:数据文件(MyISAM Data)
  • role.MYI:索引文件(MyISAM Index)

InnoDB:

在这里插入图片描述

  • user.frm:表结构文件
  • user.ibd:索引和数据文件(InnoDB Data)


底层结构

底层都是用的B+Tree来存储的

  • MYISAM:叶子节点储存的是数据的地址

在这里插入图片描述



  • InnoDB:叶子节点储存的是数据,所以InnoDB 的索引也被称为聚集索引
    在这里插入图片描述


  • MYISAM支持表锁,不支持行锁。
  • InnoDB 支持表锁和行锁。


表主和外键

  • MYISAM 允许没有任何索引和主键的表存在,索引都是保存行的地址

  • InnoDB 如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键(用户不可见)

  • MYISAM 不支持外键

  • InnoDB 支持外键

猜你喜欢

转载自blog.csdn.net/qq_42380734/article/details/108714312