Mysql索引--04---MySQL数据结构概述
Posted 高高for 循环
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql索引--04---MySQL数据结构概述相关的知识,希望对你有一定的参考价值。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
mysql数据结构
Hash结构
java hashmap
Hash结构效率高,那为什么索引结构要设计成树型呢?
MySQL中Hash索引
innodb —自适应 Hash 索引
innodb默认开启了自适应 Hash 索引
树结构简述
树–01—定义
二叉搜索树
AVL树
B-Tree
B+Tree
B+树的叶子节点存储的是完整的用户记录。
R树
面试题
1. B+ 树和 B 树的差异:
2. B+数中间节点不直接存储数据,这样的做的好处是什么?
3. B+树的存储能力如何?为何说一般查找行记录,最多只需1~3次磁盘IO
计算一个h=3的b+树 能存多少个索引元素?
- Mysql 默认底层给每个节点设置的容量大小是 16kb
-
假设一个主键索引 类型为 bigint 8个字节,
-
Mysql 默认给指针分配的内存大小 是 6个字节
-
每一个节点能存储 16*1024/(8+6)=1170个索引元素
-
叶子节点的索引元素因为要存储data,所以按1kb的大小计算的话,一个叶子节点能存储16个索引元素
count(索引元素)=1170 * 1170 * 16=21902400
经过上述计算得知,一个高度h为3 的 B+树,叶子节点,大约能容纳2100万个索引元素.
所以上千万的数据表,MySQL也只要经过1到2次的io磁盘查找,就能获取到指定元素的数据.
4. 为了减少IO,索引树会一次性加载吗?
5. 为什么说B+树比B-树更适合实际应用中操作系统的文件索引和数据库索引?
6. Hash 索引与 B+ 树索引的区别
以上是关于Mysql索引--04---MySQL数据结构概述的主要内容,如果未能解决你的问题,请参考以下文章
MYSQL性能调优01_索引的概述B+树InnoDB索引实现(聚集)联合索引的设定
MySQL 进阶 索引 -- 索引概述索引结构(B+TreeHash)索引分类(聚集索引 二级索引 主键索引唯一索引常规索引全文索引)