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开 ...
随机推荐
- Python自动化测试常用库
基本库: sys 程序和Python解析器的交互 os 启动新进程:操作文件和目录 re 正则表达式,字符串匹配 string 基本字符串操作 inspect 提供自省和反射功能 importlib ...
- How to receive JSON as an MVC 5 action method parameter
How to receive JSON as an MVC 5 action method parameter 解答1 Unfortunately, Dictionary has problems ...
- oracle/mysql经典电子书籍pdf下载
Oracle LZ写的书,深入结合oracle设计.优化/SQL优化.应用层架构与优化.大量生产案例,敬请期待... Oracle编程艺术 深入理解数据库体系结构(第3版) 链接:https://pa ...
- Socket: java Socket的isConnected()、和isClosed()判断是否在线的问题(转)
首先,很多初学者都会用这两个API来判断对方是否在线,但是经过我的实践,此API并不能实时判断是否在线的状态. 经过百度查询资料后,得出结论: 事实上这些方法都是访问socket在内存驻留的状态,当s ...
- Spring cloud微服务安全实战-5-11实现基于token的SSO(1)
基于服务器session的SSO的方案,用户的登陆状态都是存在服务器端的 基于浏览器cookie的token实现一个sso,在原来的基础上做进一步的改造.让他不依赖session.而是完全由cooki ...
- RabbitMQ 入门教程(PHP版) 简单Demo
RabbitMQ的关键字说明 (1)Broker:经纪人.提供一种传输服务,维护一条从生产者到消费者的传输线路,保证消息数据能按照指定的方式传输.粗略的可以将图中的RabbitMQ Server当作B ...
- 在excel图表上添加数据标签
在excel图表上添加数据标签 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/47838665 方法与步骤 在E ...
- ISCSI多路径配置(二)
搭建iscsi存储系统(一) (1).配置ISCSI多路径实现磁盘挂载高可用 如果存储服务器到交换机只有一条线路的时候,那么一条线路出现故障,整个就没法使用了,所以多线路可以解决这个问题,避免单点故障 ...
- Linux系统调优——系统整体运行状态排查(七)
(1).vmstat vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的整体状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写 ...
- 基于Broadcast 状态的Flink Etl Demo
接上文: [翻译]The Broadcast State Pattern(广播状态) 最近尝试了一下Flink 的 Broadcase 功能,在Etl,流表关联场景非常适用:一个流数据量大,一个流数据 ...