加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL之存储引擎InnoDB和MyISAM的区别及底层详解

发布时间:2018-09-08 17:52:49 所属栏目:编程 来源:每天进步一点点喽
导读:9月15日技能沙龙 | 与东华软件、AWS、京东金融、饿了么四位大咖切磋精准运维! 题外话:中汉文化博大进深,从学Java到数据库,无一不浮现出统一组件鱼和熊掌不行兼得的要义。天然,编程中安详和服从也很难同时做到美满,这一次InnoDB和MyISAM又让我大开眼界

InnoDB的帮助索引数据域存储的也是响应记录主键的值而不是地点,以是当以帮助索引查找时,会先按照帮助索引找到主键,再按照主键索引找到现实的数据。以是Innodb不提议行使过长的主键,不然会使帮助索引变得过大。

提议行使自增的字段作为主键,这样B+Tree的每一个结点城市被次序的填满,而不会频仍的破碎调解,会有用的晋升插入数据的服从。

主索引如下:

MySQL之存储引擎InnoDB和MyISAM的区别及底层详解

帮助索引如下:

MySQL之存储引擎InnoDB和MyISAM的区别及底层详解

上图,可以看到叶节点包括了完备的数据记录。这种索引叫做聚积索引。由于InnoDB的数据文件自己要按主键聚积,以是InnoDB要求表必需有主键(MyISAM可以没有),假如没有显式指定,则MySQL体系会自动选择一个可以独一标识数据记录的列作为主键,假如不存在这种列,则MySQL自动为InnoDB表天生一个隐含字段作为主键,这个字段长度为6个字节,范例为长整形。

并且,与MyISAM索引的差异是InnoDB的帮助索引data域存储响应记录主键的值而不是地点。换句话说,InnoDB的全部帮助索引都引用主键作为data域。

因此,进程为:将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若行使”where id = 13”这样的前提查找主键,则凭证B+树的检索算法即可查找到对应的叶节点,之后得到行数据。若对Name罗列办前提搜刮,则必要两个步调:第一步在帮助索引B+树中检索Name,达到其叶子节点获取对应的主键。第二步行使主键在主索引B+树种再执行一次B+树检索操纵,最终达到叶子节点即可获取整行数据。

两种索引数据查找进程如下:

MySQL之存储引擎InnoDB和MyISAM的区别及底层详解

【编辑保举】

  1. Linux下怎样实现MySQL数据库天天自动备份按时备份
  2. MySQL存储引擎MyISAM与InnoDB的是非
  3. 从MySQL到HBase:数据存储方案转型演进
  4. 30个MySQL万万级大数据SQL查询优化能力详解
  5. MySQL存储引擎知几多
【责任编辑:武晓燕 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读