MySQL索引底层实现
来源:互联网 发布:远程桌面控制软件下载 编辑:程序博客网 时间:2024/05/16 23:41
索引的本质
MySQL官方对于索引的定义为:索引是帮助MySQL高效获取数据的数据结构。即可以理解为:索引是数据结构。
我们知道,数据库查询是数据库最主要的功能之一,我们都希望查询数据的速度尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找,当然这种时间复杂度为O(n)的算法在数据量很大时显然是糟糕的,于是有了二分查找、二叉树查找等。但是二分查找要求被检索数据有序,而二叉树查找只能应用于二叉查找树,但是数据本身的组织结构不可能完全满足各种数据结构。所以,在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
B-Tree和B+Tree
目前大部分数据库系统及文件系统都采用B-Tree和B+Tree作为索引结构。
通过上面的分析,我们知道IO次数取决于b+数的高度h,假设当前数据表的数据为N,每个磁盘块的数据项的数量是m,则有h=㏒(m+1)N,当数据量N一定的情况下,m越大,h越小;而m = 磁盘块的大小 / 数据项的大小,磁盘块的大小也就是一个数据页的大小,是固定的,如果数据项占的空间越小,数据项的数量越多,树的高度越低。这就是为什么每个数据项,即索引字段要尽量的小,比如int占4字节,要比bigint8字节少一半。这也是为什么b+树要求把真实的数据放到叶子节点而不是内层节点,一旦放到内层节点,磁盘块的数据项会大幅度下降,导致树增高。当数据项等于1时将会退化成线性表。
转载:http://www.cnblogs.com/novalist/p/6410964.html
- mysql 索引底层实现
- MySQL索引底层实现
- 讨论MySQL索引底层实现
- MySql索引的底层实现
- 深入探讨MySQL索引底层实现
- MySQL索引底层实现(张高伟)
- MySQL索引底层数据结构
- MySQL底层索引数据结构
- 数据库索引底层实现
- 索引的底层实现原理
- MySQL innoDB索引底层原理详解
- MySQL innoDB索引底层原理详解
- 数据库索引实现底层原理2
- 深入理解 MySQL 底层实现
- Mysql索引实现
- mysql索引的实现
- mysql的索引实现
- Mysql 索引实现原理
- think php5隐藏index.php
- ENE轨道线的选股公式
- USB学习之三 故障自恢复
- 用鼠标事件实现拖拽
- Java-算法-数组倒置
- MySQL索引底层实现
- POJ
- boost::shared_ptr 分析与实现
- 快速排序的三种实现以及应用场景
- 教你如何迅速秒杀掉:99%的海量数据处理面试题
- 前端跨域解决方案
- jit.js源码解读
- Druid连接池的testQuery/validationQuery
- MapStruct处理Java中枚举Enum类型使用与举例