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数据结构概述的主要内容,如果未能解决你的问题,请参考以下文章

04: Mysql性能优化

MySQL索引概述

MYSQL性能调优01_索引的概述B+树InnoDB索引实现(聚集)联合索引的设定

MySQL 进阶 索引 -- 索引概述索引结构(B+TreeHash)索引分类(聚集索引 二级索引 主键索引唯一索引常规索引全文索引)

04-MySQL的存储引擎和列的常用类型

MySQL索引的数据结构