(MyISAM)流程 :索引一般是指表的索引,索引存储在MYI文件中,检索时先检索MYI文件,取到具体指针(data),再去MYD文件中取数据
(InnoDB)流程:
聚集索引:InnoDB使用,叶节点包含了完整的数据记录,而不是仅仅存储数据所在的磁盘位置的指针.
非聚集索引: 索引列仅存储具体元素的指针,需要去MYD文件去取数据
使用InnoDB,一般推荐建立主键,并且主键自增,如果不建立主键,那么InnoDb会自动选择一列值都不相同的列,用来维护B+tree,如果选不到,InnoDB会自动建立一个row_id(隐藏列),用来维护树结构
1.InnoDB默认是支持事务的,另一个 不支持事务。 这是被淘汰的最重要原因吧,
2.InnoDB支持外键,另一个不支持。
3. InnoDB是聚集索引,另一个是非聚集索引。
4.InnoDB不保存表的具体行数,select count(*)需要全表扫描, 而MyISAM有个函数,读取一下就知道了
5.InnoDB最小的锁粒度是行锁,MYSAM最小的是表锁,性能不太行。
6.读写修改频繁,用InnoDB,仅仅查询用MyISAM,效率更高。取决于业务
本文详细介绍了InnoDB和MyISAM两种MySQL存储引擎的差异。InnoDB支持事务处理和外键,采用聚集索引,行锁设计,适合读写频繁的场景;而MyISAM不支持事务,非聚集索引,全表锁,但在纯查询场景下效率较高。了解这些特性有助于选择合适的存储引擎来优化数据库性能。
1007

被折叠的 条评论
为什么被折叠?



