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开 ...
随机推荐
- cross socket tcp客户端开发
cross socket tcp客户端开发 uses Net.SocketAPI, Net.CrossSocket.Base, Net.CrossSocket FCrossTcp: ICrossSoc ...
- Phpstudy 无法启动mysql
原因: 两个mysql版本冲突 本地已经有一个mysql服务(3306)默认开启,再装了phpstudy又会自带一个mysqlla服务(3306) phpstudy启动后会启动mysqlla 发现3 ...
- Nginx流控
流量限制(rate-limiting),是Nginx中一个非常实用,却经常被错误理解和错误配置的功能.我们可以用来限制用户在给定时间内HTTP请求的数量.请求,可以是一个简单网站首页的GET请求,也可 ...
- cv2.imread()
cv2.imread() 使用opencv和caffe的伙伴们,可能会有一个疑问,那就是对于同时读取图片的cv2.imread()和caffe.io.loadimage两个函数,有什么差别? 1.cv ...
- C++操作Mysql数据库/Linux下
本文链接:https://blog.csdn.net/Tanswer_/article/details/72796570想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的 ...
- bower 安装依赖提示 EINVRES Request to https://bower.herokuapp.com/packages/xxx failed with 502
出错提示EINVRES Request to https://bower.herokuapp.com/packages/chai failed with 502 访问 https://bower.he ...
- Kindle支持的文件格式
Kindle支持的文件格式 Kindle个人文档服务Kindle个人文档服务支持以下文件类型:Kindle格式(.MOBI..AZW)--Microsoft Word(.DOC..DOCX)HTML( ...
- npm使用国内源
npm使用国内源 转 https://www.jianshu.com/p/7e84d7b119bc $ npm install -g cnpm --registry=https://registr ...
- 【BIGEMAP一键离线地图服务】
地址:http://www.bigemap.com/offlinemaps/ 首页 离线地图 代码示例 项目案例 开发文档 关于我们 [BIGEMAP一键离线服务] 1.快速搭建离线地图服务2 ...
- Android平台签名证书(.keystore)生成指南
来源:https://ask.dcloud.net.cn/article/35777 Android平台签名证书(.keystore)生成指南 分类:HTML5+ Android证书 Android平 ...