首页 / MYSQL / B+树 & mysql
B+树 & mysql
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了B+树 & mysql,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1445字,纯文字阅读大概需要3分钟。
内容图文
![B+树 & mysql](/upload/InfoBanner/zyjiaocheng/914/24ff025daee34a649a61b9bc0413ffef.jpg)
1、数据库中最常见的慢查询优化方式是什么?
加索引
2、为什么加索引能优化慢查询?
索引其实是一个数据结构,B+树。
B+树
一个m阶的B+树具有如下几个特征:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。
2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树的优势:
1.单一节点存储更多的元素,使得查询的IO次数更少。
2.所有查询都要查找到叶子节点,查询性能稳定。
3.3.所有叶子节点形成有序链表,便于范围查询。
3、你知道哪些数据结构可以提高查询速度?
哈希表、完全平衡二叉树、B+树。
4、那这些数据结构既然都能优化查询速度,mysql为何选择用B+树?
一个节点里面可以存多个元素:磁盘IO
元素有冗余+叶子节点之间有指针:范围查找
B+树的优势(见上面)
5、为什么一个节点为1页(16K)就够了?
假如有个高度为2的B+树:
result = 叶子节点数 * 一个叶子节点里能存放的数据条数
叶子节点数 = 根节点的指针数 = {索引值+ 指针}组合数 = 索引值个数
假设一行数据的大小-=1KB(合理的值)
一个叶子节点能够存放的数据条数?16KB / 1KB = 16条
索引值个数?16KB / {int类型索引值8B + 指针6B} (14B) = 16KB / 14B = 1170
result = 1170*16=18720
B+树高度为2 : 1170*16=18720
B+树高度为3: 1170 * 1170 * 16 = 21902400
![](http://www.icode9.com/i/li/?n=1&i=images/blog/201904/04/9ebbbbf200b9db22d3d37ff6f6bb1e2c.png?,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
内容总结
以上是互联网集市为您收集整理的B+树 & mysql全部内容,希望文章能够帮你解决B+树 & mysql所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。
来源:【匿名】