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开 ...
随机推荐
- ubuntu之路——day7.2 regularization
所有的正则化方法来自于吴恩达老师的免费公开课:https://mooc.study.163.com/learn/2001281003?tid=2001391036#/learn/content?typ ...
- H5注意点(2)
1. 列表标签的作用:给一堆数据添加列表语义,也就是告诉搜索引擎告诉浏览器这一堆数据是一个整体. 2. HTML中列表标签的分类 - 无序列表(最多)(unordered list)(格式:ul> ...
- arcpy 重分类
arcpy.gp.Reclassify_sa("dem.tif","Value","0 2000 1;2000 2100 2;2100 2500 3; ...
- Unity3D地下守护神ARPG开发三部曲 视频教程+素材+源码
通过大型教学项目“MMOARPG地下守护神”项目的学习,掌握常用设计模式.架构设计.各种重要算法与设计模式在项目中的灵活运用,学后达到中高级游戏研发人员水平,做主程必备. 适用人群 学习Unit ...
- vs2017在前端页面使用F12无法转到js脚本函数定义
这样设置后就可以正常使用了
- SNAT场景模拟
我的网络配置跟教程中的这个略有不同: web server:192.168.66.101 nat server:192.168.66.188:192.168.6.172 client:192.168. ...
- Jmeter之__CSVRead随机读取变量
背景:当你需要从一些数据中随机的取值用的话可以用这个函数来实现__CSVRead __CSVRead函数用于对脚本进行参数化,当脚本中不同变量需要不同参数值时,可以考虑__CSVRead函数. _CS ...
- kinova roslaunch kinova_bringup kinova_robot.launch kinova_robotType:=j2s7s300
luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ luo@luo-ThinkPad-W530:~$ ...
- 【Java】Spring之Resource(三)
Java的各种URL前缀的标准类和标准处理程序不足以完全访问低级资源.例如,没有URL可用于访问需要从类路径或相对于a获取的资源的标准化实现 ServletContext.虽然可以为专用URL 前缀注 ...
- Hive开启mapjoin优化、并行执行、动态分区
1. mapjoin优化适合小表join大表 set hive.optimize.skewjoin=true; //有数据倾斜时开启负载均衡,默认false set hive.auto.convert ...