InnoDB与MyISAM 聚集索引与非聚集索引

本文详细介绍了InnoDB和MyISAM两种MySQL存储引擎的特性对比,包括事务支持、锁定机制、索引类型等。InnoDB支持ACID事务,行级锁定,适合高并发场景;而MyISAM不支持事务,读多于写时可选。在索引方面,InnoDB使用聚簇索引,行数据与主键存储在一起,而MyISAM采用非聚簇索引,主键和辅助键索引分开,数据存储在独立位置。理解这些区别有助于优化数据库性能。
摘要由CSDN通过智能技术生成

InnoDb:
支持acid事务,支持行级锁和外键约束,容灾性好,可建立缓冲池存数据及索引,不保存行数,锁粒度为行。
MyLASM:
不支持事务,外键,读写时需锁表,效率低,保存了行数,读多于写时可选择。复合索引速度快于innodb

聚簇索引和非聚簇索引:
InnoDB使用的是聚簇索引,MyLASM使用非聚簇索引,对于聚簇索引存储来说,行数据和主键B+树存储在一起,辅助键B+树只存储辅助键和主键,主键和非主键B+树几乎是两种类型的树。对于非聚簇索引存储来说,主键B+树在叶子节点存储指向真正数据行的指针,而非主键

InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法即可查找到对应的叶节点,之后获得行数据。若对Name列进行条件搜索,则需要两个步骤:第一步在辅助索引B+树中检索Name,到达其叶子节点获取对应的主键。第二步使用主键在主索引B+树种再执行一次B+树检索操作,最终到达叶子节点即可获取整行数据。

MyISM使用的是非聚簇索引,非聚簇索引的两棵B+树看上去没什么不同,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的节点存储了主键,辅助键索引B+树存储了辅助键。表数据存储在独立的地方,这两颗B+树的叶子节点都使用一个地址指向真正的表数据,对于表数据来说,这两个键没有任何差别。由于索引树是独立的,通过辅助键检索无需访问主键的索引树。
在这里插入图片描述
参考:https://blog.csdn.net/qq_28584889/article/details/88778741

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值