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相关的更多相关文章

  1. MySQL · 特性分析 · 优化器 MRR & BKA【转】

    MySQL · 特性分析 · 优化器 MRR & BKA 上一篇文章咱们对 ICP 进行了一次全面的分析,本篇文章小编继续为大家分析优化器的另外两个选项: MRR & batched_ ...

  2. MySQL--BNL/ICP/MRR/BKA

    #======================================================##MySQL关联查询算法:BNL(Block Nested-Loop)ICP(Index ...

  3. MySQL Index--BNL/ICP/MRR/BKA

    MySQL关联查询算法: BNL(Block Nested-Loop) ICP(Index Condition Pushdown) MRR(Multi-Range Read) BKA(Batched ...

  4. mysql 优化(3)

    using filesort 不能利用索引来进行分组或排序,利用filesort算法在内存或者磁盘进行排序using temporary 先在内存中进行分组,归并等操作,不够利用磁盘 SELECT i ...

  5. 再议 MySQL 回表

    一:回表概述 关于回表的概念网上已经有很多了,这里不过多赘述.下面我们直接放一张图可能更直观说明什么是回表. 图中 非聚集索引也叫二级索引,二级索引本质上也是 一 个 B+ 树结构,与聚集索引(也叫主 ...

  6. MYSQL COST optimizer

    http://blog.chinaunix.net/uid-26896862-id-3326400.html https://www.slideshare.net/olavsa/mysql-optim ...

  7. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  8. 【mysql】关于ICP、MRR、BKA等特性

    一.Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是mysql使用索引从表中检索行数据的一种优化方式,从mysql5.6开始支 ...

  9. ICP、MRR、BKA等特性

    一.Index Condition Pushdown(ICP) Index Condition Pushdown (ICP)是 mysql 使用索引从表中检索行数据的一种优化方式,从mysql5.6开 ...

随机推荐

  1. 小福bbs-冲刺总结

    [小福bbs-冲刺总结] 这个作业属于哪个课程 班级链接 这个作业要求在哪里 作业要求的链接 团队名称 小福bbs 这个作业的目标 冲刺总结 作业的正文 小福bbs-冲刺总结 其他参考文献 面向百度和 ...

  2. Assignment5: 使用Visual Studio 进行可编码的UI测试

    一.实验目的: 使用Visual Studio 可编码的UI测试功能创作自动化测试 二.实验原理:黑盒测试 三.实验需求:win8 app.Visual Studio Ultimate 2012/20 ...

  3. 转 python多个命令同时执行.sh

    1.背景是 有三个脚本a.py, b.py, c.py 三个都是爬虫,里面都是while(true)方式运行的,不会主动运行结束. 每次启动他们,就需要: python a.py > logs/ ...

  4. tx1 gpio

  5. Eclipse SDK目录

    SDK standard developer kits 标准的开发工具 ---类似JDK   1.add-ons 这里面保存着附加库,比如GoogleMaps,当然你如果安装了OphoneSDK,这里 ...

  6. 【转】Python读取PDF文档,输出内容

    Python3读取pdf文档,输出内容(txt) from urllib.request import urlopen from pdfminer.pdfinterp import PDFResour ...

  7. JSOUP 爬虫

    作者QQ:1095737364    QQ群:123300273     欢迎加入! 1.mavne 依赖: <!--html 解析 : jsoup HTML parser library @ ...

  8. 【Dart学习】--Dart之数字(num)相关方法总结

    一,部分属性 用法一(figureA) int figureA = -93; 是否为负数 print(figureA.isNegative); figureA是否是有限的 print(figureA. ...

  9. 全面系统Python3入门+进阶-1-5 一个经典误区

    结束

  10. 算法习题---5.6团体队列(Uva540)

    一:题目 有t个队伍的人正在排队,每次新来一个人,如果他有队友在排队,那他可以插队,直接排到他的队伍的末尾.如果没有队伍在前面,那么他直接排在长队的末尾 ENQUEUE x 将编号x的队员入队 DEQ ...