mysql数据库索引原理及其常用引擎对比
索引原理
树数据结构及其算法简介
B+/-树:
- 多路搜索树;
- 时间复杂度O(logdN);h为节点出度,d为深度
红黑树:
- 节点带有颜色的平衡二叉树
- 时间复杂度O(log2N);h节点出度=2
平衡二叉树:
- 绝对平衡二叉树,查找效率和红黑树基本一样
- 但是插入和删除的效率低于红黑书;
查找时间复杂度
上述数据结构,因为时间复杂度是O(logdN),所以d越大,效率上越低,
同时,红黑树在插入和删除的操作上有较高的效率,所以C++中Map就是红黑树实现的;
磁盘I/O操作
参考文章:MySQL索引背后的数据结构及算法原理[http://blog.codinglabs.org/articles/theory-of-mysql-index.html]
- 数据库的索引空间可能很大,所以在索引的数据可能会部分存储到磁盘空间;
- 根据O(logdN), B+/-树的d比平二叉衡树大,所以访问节点的数量就越小,可以减少IO读写;
- 有因为B+树内部节点去掉了data域,所以可以有更大的出度d,所以i/o会更少;
- 所以数据库在的索引使用 B+树实现;
索引类型
- 聚集索引:主键索引(一级索引);这种实现方式使得按主键的搜索十分高效
- 辅助索引(二级索引):需要检索两遍索引,首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。
MYSQL优化
- 结构优化:
- 查询优化:最左前缀原理
1.范围列可以用到索引(必须是最左前缀),但是范围列后面的列无法用到索引。同时,索引最多用于一个范围列,因此如果查询条件中有两个范围列则无法全用到索引。
2.查询条件中含有函数或表达式则不能使用索引
搜索引擎
| 类型 | 优点 | 缺点 | 使用场景 |
|---|---|---|---|
| InoDB | 事务,行级锁,支持失败恢复 | 不支持全文搜索 | |
| MyIsAM | 快速读取 | 表级锁,无事务,不支持失败恢复 | |
| MEMORY | hash算法,效率高 | 数据不安全 |
mysql数据库索引原理及其常用引擎对比的更多相关文章
- (转)MySql数据库索引原理(总结性)
本文引用文章如链接: http://www.codinglabs.org/html/theory-of-mysql-index.html#more-100 参考书籍:Mysql技术内幕 本文主要是阐述 ...
- MySql数据库索引原理
写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存储100条记录.如果没有索引,查询将 ...
- mysql数据库----索引原理与慢查询优化
一.介绍 1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语 ...
- MySQL 数据库--索引原理与慢查询优化
索引的原理 本质都是:通过不断地缩小想要获取数据的范围来筛选出最终想要的结果,同时把随机的事件变成顺序的事件,也就是说,有了这种索引机制,我们可以总是用同一种查找方式来锁定数据. 索引的数据结构 b+ ...
- MySQL数据库索引常见问题
笔者看过很多数据库相关方面的面试题,但大多数答案都不太准确,因此决定在自己blog进行一个总结. Q1:数据库有哪些索引?优缺点是什么? 1.B树索引:大多数数据库采用的索引(innoDB采用的是b+ ...
- mysql进阶(二十七)数据库索引原理
mysql进阶(二十七)数据库索引原理 前言 本文主要是阐述MySQL索引机制,主要是说明存储引擎Innodb. 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础. ...
- 数据库MySQL 之 索引原理与慢查询优化
数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...
- MySQL数据库索引的底层原理(二叉树、平衡二叉树、B-Tree、B+Tree)
1.MySQL数据库索引的底层原理 https://mp.weixin.qq.com/s/zA9KvCkkte2mTWTcDv7hUg
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
随机推荐
- eas之单据转换规则
/** * BOTP单据转换 * @param botpNum 转换规则编号 * @param BillInfo 原单据 */ public static void BOTP(String b ...
- 【剑指Offer】45、扑克牌顺子
题目描述: LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到 ...
- ls命令:显示文件或目录
ls:显示目录下的内容及相关属性信息 [命令详解] [功能说明] ls命令可以理解为英文list的缩写,其功能是列出目录的内容及其内容属性信息(list directory contents).该命令 ...
- ps图标长投影如何做?
https://jingyan.baidu.com/article/2f9b480dad9c8e41cb6cc297.html ps图标长投影
- redis liunx系统安装
同事总结非常好,借鉴一下 原文地址:https://www.cnblogs.com/dslx/p/9291535.html redis安装 下载redis的安装包上传到Linux服务器,安装包如下 h ...
- node环境变量配置,npm环境变量配置
引言:很久没有在windows上配过node, 记得以前node环境变量是要加 NODE_PATH 到用户变量,再在系统变量引入NODE_PATH的,而npm install的全局包目录会存放在C:/ ...
- HDU 4535
裸 的错排.... #include <iostream> #include <cstdio> #include <cstring> #include <al ...
- RubyMine快捷键
RubyMine快捷键 ctrl+shift+up/down 向上/向下移动代码段 alt+shift+up/down 向上/向下移动代码行 ctrl+y 删除一行 ctrl+shift+f10 运行 ...
- LAS文件转TXT文件
LAS文件转TXT文件 https://www.liblas.org/start.html
- 检測wifi是否须要portal验证 公共场所wifi验证
何为wifi portal验证? 平时在商场,咖啡厅,银行等公共场所.我们手机提示:有可用WLAN.这些WIFI能够直接连接,不须要password,但须要我们手动在手机网页上进行验证,通常是输入一个 ...