MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(二) mysql索引的实现原理和数据结构及索引技巧

MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(二) mysql索引的实现原理和数据结构及索引技巧,第1张

MySQL索引、锁、事务、MVCC、分库分表常见问题总结笔记(二) mysql索引的实现原理和数据结构及索引技巧

 2.mysql索引的实现原理和数据结构

 

为什么不用Hash表存储MySQL数据

B树

b树存储的应该有key,value,指针(存储子节点地址信息)一个磁盘块16kb,读一个磁盘块就是读取16kb,其中大部分存储空间被value(data)占去。

B+树

特点:叶子节点存储数据,非叶子节点存储指针和key(主键)。

优点:由于指针和key只占用很小的空间,所以一个非叶子节点可以存储大量主键和指针,和b树相比,三层的b+树可以存储非常多的数据,确同样只需要读取3次。

得出结论:

⭐一般情况下,3到4层的b+树足以支持千万级别的数据存储。

⭐让key尽可能地占据少的存储空间(int固定4字节,varchar可以指定长度,所以小于4的长度可以使用varchar)选择索引的时候选择varchar

3.索引设计的技巧

索引前缀长度选择,减少索引占用的空间

进行索引设计时,尽可能让key(索引)占用更小的存储空间

前缀索引:实际进行数据存储时,给当前列(通常是字符类型)建索引时,可以截取列的前一部分作为索引。

怎么确定长度:可以用数据统计,测试合适的长度

由于b+树非叶子节点只存储索引和指针,索引占用空间越小,一个非叶子节点能够存储的索引越多,所以需要尽量地优化索引设计,一个好的方法就是索引前缀。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存