MySql索引底层原理(01)
2024-10-20 07:59:23
目的:通过mysql获取数据,检索数据的原理来理解索引,以及如何利用好索引。
由于篇幅问题,可能会连载几篇文章。
从mysql获取一条数据说起:
我们知道,电脑的系统在获取数据的时候会旋转磁盘,然后移动磁头,然后将盘片对应部分的数据取出。
但mysql的数据在磁盘中的位置可能不一定是连续,这样进行一次访问可能花费的开销比我们想想的要大很多,
所以我们想要提高查找速度,就一定要找一个其他方法提高检索速度(索引)。
正常索引结构都会有很多种:B-tree,Hash,位图索引等等。
前提说明:图中每个圆代表索引的1块内存区域。所以每访问一个圆(索引节点)都会产生一次IO。
因此产生的弊端:在磁头达到目标数据之前,每经过一个节点,都要产生一次IO,所以数据量增大时,节点的数量会逐渐增加。
就会使得IO次数增加。
红黑树在查找方面有所改观,每增加一个节点的同时,会经过一次平衡算法,将节点尽量分散开,
尽可能的减小红黑树的单边过于冗长。但随着数据量的增加也一样会使IO次数增加。
为了解决这个问题:mysql推出了优于前两种的(没有绝对的优)B+tree。
为了减少IO次数,mysql将一个Index的内存区域扩大成可以容纳n个根节点的大小(橘黄色区域)。
就是我们所熟知的B+Tree。
最新文章
- 正确地组织python项目的结构
- Android Studio 和 Gradle
- wget 增加单个文件下载限制大小
- 一起学CUDA(一)
- 你真的会玩SQL吗?实用函数方汇总
- powerScript脚本
- Fatal error: Call to undefined function mysql_connect()
- cocos2dx工程中接入支付宝sdk
- TortoiseGit - pull request
- Alamofire源码解读系列(十)之序列化(ResponseSerialization)
- java 连接数据库测试类
- 豹哥嵌入式讲堂:ARM开发中有用的文件(1)- source文件
- asp.net调用前台js调用后台代码分享
- 「Splay」普通平衡树模板
- 解决npm ERR! Unexpected end of JSON input while parsing near的方法汇总
- CRM WEB UI 02搜索跳转到详细界面
- suffix word ality ally an ancy ance an aneity out ~1
- <;聪明的投资者(第四版点评)>;读书笔记
- 飞机找不到,流量哪去了?记一次移动WAP网关导致的问题
- oracle 和 mysql 和区别
热门文章
- TCP/IP协议(5): IP(Internet Protocol) 协议 —— 连接各个网络的协议
- 【JS入门小游戏】01-骰子游戏
- LG P2839 [国家集训队]middle
- [BSR文摘] 如何解释CRP正常而多普勒超声显示关节炎活动的RA亚型
- Windows 注册表是什么
- windows pwn(一)
- 添加material ui库
- 从0搭建Vue3组件库(三): 组件库的环境配置
- 自己动手从零写桌面操作系统GrapeOS系列教程——8.x86介绍
- ftpget