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

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

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

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

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

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

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