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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值