MYSQL索引结构学习笔记

 mysql 的数据、索引、DDL 等数据,都是以文件形式存储的,

  所以导致每次查询都是一次I/O操作,当I/O操作过大时,会严重影响效率

MYSQL索引结构:

           mysql使用的是B+树来存储索引的,为什么不用其他的呢?
二叉树 -> 根据二叉树的概念,当数据是递增的时候,它的节点会一直增大下去
红黑树 -> 平衡二叉树 -> 每个节点存一个值,同样会导致节点过多
B 树   -> 每个节点可存多个值(解决红黑树太深的问题)  ->但是涉及到范围查询的时候,也会慢
B+树   -> 变种B树 -> 叶子节点 有指针相连 (方便范围查询)

 

MYSQL引擎存储结构:

myIsam 引擎 : 存储数据单独一个文件 .MYD  存储索引单独一个文件 .MYI
innerdb引擎 : 一个文件 同时存 索引+数据 .idb  (聚集索引)  寻址快,

又为什么所有的data都存在叶子结点上?

mysql 默认每个节点存16K数据,如果每个节点都存 key+value 会导致每个节点的key变少,从而导致节点增多 ,导致树H变高。

 

 

分享一个不错的数据结构学习网站:

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值