MRR,BKA,ICP相关
MRR
Multi-Range Read,多范围读,5.6以上版本开始支持
工作原理&优化效果:
将查询到的辅助索引结果放在一个缓冲(read_rnd_buffer_size = 4M)中
将buffer中的辅助索引根据主键(ROWID)进行排序
再根据上述排序后的主键(ROWID)顺序(回表)读取数据
减少磁盘随机访问,将随机访问转变成顺序访问,提高I/O读性能
减少buffer pool中的页面被替换次数
可批量处理对索引的查询操作
优化器开关optimizer_switch控制是否启用MRR:
默认未启用MRR
mrr = on & mrr_cost_based = on
mrr_cost_based设置为off时表示强制开启MRR
mrr_cost_based设置为on,表示优化器会通过基于成本的算法来确定是否 需要开启MRR(也就是,不强制启用MRR)
执行计划中现实 Using MRR
5.6.35中有bug


BKA
Batched Key Access,批量索引访问,MySQL5.6开始支持
同时用于表连接以及join buffer时的索引访问
支持inner join、outer join、semi-join,以及nested-outer join
JOIN表扫描时效率更高,提高JOIN效率
默认未启用,需要手动开启:
optimizer_switch = "batched_key_access_on"
前置条件:mrr=on,mrr_cost_based=off
执行计划显示 Using join buffer (Batched Key Access)

ICP
index condition pushdown,MySQL5.6以上支持
主要优化效果:
在以前,是把index key过滤后的全部记录(数据集较大)丢给server层,再进行index filter、table filter过滤
有了ICP,就可以把index filter下推(pushdown)到引擎层进行过滤
好处很明显,减少server层数据集,减少数据传输,提高处理效率
支持range、ref、eq_ref、eq_or_null类型查询
执行计划显示 Using index condition 意向


具体的执行计划看optimize_trace
MRR,BKA,ICP相关的更多相关文章
- MySQL · 特性分析 · 优化器 MRR & BKA【转】
MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...
- MySQL--BNL/ICP/MRR/BKA
#======================================================##MySQL关联查询算法:BNL(Block Nested-Loop)ICP(Index ...
- MySQL Index--BNL/ICP/MRR/BKA
MySQL关联查询算法: BNL(Block Nested-Loop) ICP(Index Condition Pushdown) MRR(Multi-Range Read) BKA(Batched ...
- mysql 优化(3)
using filesort 不能利用索引来进行分组或排序,利用filesort算法在内存或者磁盘进行排序using temporary 先在内存中进行分组,归并等操作,不够利用磁盘 SELECT i ...
- 再议 MySQL 回表
一:回表概述 关于回表的概念网上已经有很多了,这里不过多赘述.下面我们直接放一张图可能更直观说明什么是回表. 图中 非聚集索引也叫二级索引,二级索引本质上也是 一 个 B+ 树结构,与聚集索引(也叫主 ...
- MYSQL COST optimizer
http://blog.chinaunix.net/uid-26896862-id-3326400.html https://www.slideshare.net/olavsa/mysql-optim ...
- 嵌入式单片机STM32应用技术(课本)
目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...
- 【mysql】关于ICP、MRR、BKA等特性
一.Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式,从mysql5.6开始支 ...
- ICP、MRR、BKA等特性
一.Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是 mysql 使用索引从表中检索行数据的一种优化方式,从mysql5.6开 ...
随机推荐
- SQL查询练习题
1.查询学生"百里守约"的基本信息 select * from students where name='百里守约' 2.查询学生百里守约"或"百里玄策&quo ...
- Django HttpResponse与JsonResponse
本文链接:https://blog.csdn.net/mr_hui_/article/details/86498509 我们编写一些接口函数的时候,经常需要给调用者返回json格式的数据,那么如何返回 ...
- 修复gitlab服务器突然停电导致PostgreSQL损坏的数据库
最开始是存储的卷组受损,使用的DRBD,使用了xfs分区格式: 挂载也报错: mount /dev/drbd0 /var/opt mount: wrong fs type, bad option, b ...
- ES6深入浅出-10 ES6新增的数据类型-1.Symbol与隐藏属性
ES5现有的数据类型.7种数据类型. 新的类型是属于Object 最普通的类型.plain object 数组array 函数function 下面这些都属于Object类型. 今天要讲的 set类型 ...
- 报错:Error starting Jetty. JSON Metrics may not be available.java.net.BindException:地址已在使用
报错背景: 刚在CDH中集成Flume插件,启动报错 报错现象: Error starting Jetty. JSON Metrics may not be available. java.net.B ...
- IDEA 多模块工程相互依赖
最近为了结构项目,抽离通用模块,同时使用一个工程管理所有模块,使用了多模块工程.不过在依赖其他模块的编译上出现了问题,总是报找不到被依赖的jar包. 最后的解决办法也很简单,对于被依赖的模块,要在ma ...
- 线性回归:boston房价
from sklearn.linear_model import LinearRegression,Lasso,Ridge from sklearn.datasets import load_bost ...
- UITableView实现行纵向颜色渐变
实现效果如下: 其实实现很简单,开始觉得使用颜色值和tableView的indexPath.row挂钩使用即可 或者使用CAGradientLayer实现渐变 最后使用alpha实现即可.需要注意的是 ...
- 【GStreamer开发】GStreamer基础教程10——GStreamer工具
目标 GStreamer提供了一系列方便使用的工具.这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline--完全不使用C 如何找出一个element的Capab ...
- Andrew Ng机器学习课程9-补充
Andrew Ng机器学习课程9-补充 首先要说的还是这个bias-variance trade off,一个hypothesis的generalization error是指的它在样本上的期望误差, ...