MySQL MyISAM对比InnoDB为什么不支持事务?

新手上路,请多包涵

描述

MySQL MyISAM对比InnoDB为什么不支持事务?
MyISAM和InnoDB存储索引区别?

题目来源

想深入了解下MySQL引擎

阅读 8.1k
3 个回答

MyISAM和InnoDB在索引存储结构上最大的区别其实就是聚簇索引和非聚簇索引的区别。

MyISAM和InnoDB的索引结构都是基于B+tree数据结构设计的,不过MyISAM主键索引的叶子节点和非主键索引的叶子节点都存放的是行数据的磁盘地址。InnoDB非主键索引存储的是主键值,而主键索引里存储的是具体的行数据。
InnoDB在进行非主键索引查询时,先在非主键索引中查找到对应的主键值,然后根据主键值再去主键索引里进行一次回表查询,获取主键索引中存储的行数据。

具体mysql相关内容可以参考我的博客
Mysql-索引数据结构&引擎篇
Mysql-索引类型篇
Mysql-事务,锁篇
Mysql-MVCC篇
Mysql-优化篇
Mysql-其他篇

MyISAM设计之初,没有想到日后自己会成为知名的数据存储引擎之一,也就没有考虑支持事务

5.7之后MySQL默认的存储引擎已经是InnoDB,个人认为,多了解InnoDB特性即可

MyISAM存储引擎没有redo和undo文件,没法支持事务的ACID特性,锁也只有表锁

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题