Mysql中的MyISAM引擎和Innodb引擎

Mysql中的MyISAM引擎和Innodb引擎

文章参考:https://mp.weixin.qq.com/s/cOdvz3SPltNQsm-C2Cyd0A

Mysql数据库通过B+树建立索引

  1. MyISAM引擎
    MyISAM具有很好的查询性能,但不支持事务处理,属于非事务引擎。
    MyISAM引擎索引采用非聚集索引,也就是数据和索引存放在不同的文件上。在创建表的时候,以主键作为KEY建立索引B+树(索引文件),树中的叶子节点存放的是与之对应数据的物理地址,通过这个物理地址,我们可以在对应的数据文件中找到对应的数据信息。当为表中其他字段添加索引时,会根据该字段生成对应的索引B+树,通过叶子节点存放的物理地址,可以在数据文件里找到具体对应的数据信息。

  2. Innodb引擎
    Innodb支持ACID兼容的事务功能,支持行级锁,是Mysql默认的引擎。
    Innodb引擎索引采用聚集索引,也就是数据和索引放在同一个文件上。在使用Innodb引擎创建表时,如果表中有字段ID,Innodb会自动将ID字段设置为主键,并以主键作为KEY建立索引B+树,与MyISAM不同的是,Innodb中主键索引树的叶子节点存放的是具体的数据信息。当我们为表中的其他字段添加索引时,Innodb也会根据该字段生成对应的索引B+树,但特别的是,所生成的B+树叶子节点存放的是主键KEY。获取信息时,会通过对应的主键KEY,去主键索引树中查找对应的数据信息。这样做的目的是节省存储空间,除了主键索引树存放具体数据外,其他索引树只存储主键KEY,数据不会冗余,牺牲一点查询效率,节省巨大的存储空间(用时间换空间)。

两者的比较:
从两者采用的索引方式可以看出,MyISAM查询性能更好。MyISAM通过索引树中存放的物理地址直接的定位到对应的数据信息,而Innodb中,如果不是主键索引查询数据时,需要通过叶子节点对应的主键KEY,再去主键索引树中查询对应的数据信息。
在这里插入图片描述
关于索引字段

  1. 一个字段频繁的作为查询条件时,应该创建索引提高查询效率。
  2. 唯一性较差的字段不适合单独创建索引。
  3. 对于更新较频繁的字段也不适合创建索引。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值