栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

深入理解MySQL数据结构与算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深入理解MySQL数据结构与算法

深入理解MySQL数据结构与算法

文章目录
  • 深入理解MySQL数据结构与算法
    • 1 数据结构
    • 2 存储引擎
      • 2.1) MyISAM
      • 2.2) Innodb
    • 3 索引分类
      • 3.1)聚簇索引
      • 3.2)非聚簇索引(二级索引)
      • 3.3) 联合索引(工作中常用)
      • 3.4) 覆盖索引(不是一种索引,是一种查询字段的方式)

1 数据结构
  • 二叉树(形成一条链表的形式)
  • 红黑树(树的高度太深)
  • B树

  • B+树

B树和B+树的深度是由非叶子节点的所能存放的节点的个数所决定

这就是为什么MySQL底层是选择B+树的原因 ,因为一个页的大小是16KB而B树中存放了这数据data所以一个页所存放的节点个数少些,而B+树节点的数据是存放在叶子节点上,故如果使用B树那么层数会相应提高很多。

2 存储引擎

存储引擎是对数据库表生效的

2.1) MyISAM
  • MYI 存储的索引
  • MYD 存储的数据
  • frm 存储的表结构

2.2) Innodb

为什么建议innodb表必须建主键,并且推荐主键为整型自增?

因为在构建表索引的时候会根据主键去构建索引的,如果没有主键的话,就从第一列依次的去寻找,唯一且不同的列去构造索引,,如果不存在底层会自动生成UUID生成的隐藏列来构建索引。

因为索引底层是二分查找比大小,整形比大小方便,字符串比大小每一个字符的ASCII比较麻烦

为啥自增?

如果不是自增的话,会出现节点的分裂,还会出现树的平衡破坏B+树的结构,而自增都是往后面添加不会出现以上的情况

hash索引不支持范围查找

B+树支持范围查找,因为是双向指针

  • frm 表结构
  • ibd数据+索引

3 索引分类 3.1)聚簇索引 3.2)非聚簇索引(二级索引)

为什么非主键索引结构的叶子节点存储是主键值?(一致性和节约空间)

3.3) 联合索引(工作中常用)

3.4) 覆盖索引(不是一种索引,是一种查询字段的方式)

覆盖索引就是所查找的结果集 ,在所查找的索引树当中已经存在了不用再去回表操作或者是二级索引了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024611.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号