MySQL MRR

作者: 晚歌歌 | 来源:发表于2021-09-26 22:39 被阅读0次

简介

MRR,全称「Multi-Range Read Optimization」。
简单说:MRR 通过把「随机磁盘读」,转化为「顺序磁盘读」,从而提高了索引查询的性能。

命令

mysql > set optimizer_switch='mrr=on';

另外还有一个参数mrr_cost_based: on/off
则是用来告诉优化器,要不要基于使用 MRR 的成本,考虑使用 MRR 是否值得(cost-based choice),来决定具体的 sql 语句里要不要使用 MRR。
很明显,对于只返回一行数据的查询,是没有必要 MRR 的,而如果你把 mrr_cost_based 设为 off,那优化器就会通通使用 MRR,这在有些情况下是很 stupid 的,所以建议这个配置还是设为 on,毕竟优化器在绝大多数情况下都是正确的。

开启前磁盘运动轨迹

image.png

先到左边的二级索引找,找到第一条符合条件的记录(实际上每个节点是一个页,一个页可以有很多条记录,这里我们假设每个页只有一条),接着到右边去读取这条数据的完整记录。

读取完后,回到左边,继续找下一条符合条件的记录,找到后,再到右边读取

开启后磁盘运动轨迹

image.png

对于 Innodb,则会按照聚簇索引键值排好序,再顺序的读取聚簇索引。

优势

1、磁盘和磁头不再需要来回做机械运动;
2、可以充分利用磁盘预读
3、在一次查询中,每一页的数据只会从磁盘读取一次

相关文章

  • MySQL MRR

    简介 MRR,全称「Multi-Range Read Optimization」。简单说:MRR 通过把「随机磁盘...

  • MySql优化:ICP 和MRR

    MRR 「Multi-Range Read」初步理解 对where条件拆分,减少通过索引查到过多无用的数据;查询索...

  • Multi-Range Read优化

    1 概述 MySQL Multi-Range Read(MRR)优化主要用于在使用二级索引访问数据时减少随机读。 ...

  • MySQL

    MySQL是3层还是4层?2.为什么推荐id自增?3.MRR:mult_range_read4.FIC:fast ...

  • MRR

    1.表结构 在 create_date 字段上创建了索引 开启MRRset optimizer_switch='m...

  • mysql 索引优化特性之MRR

    MRR针对于辅助索引上的范围查询进行优化,收集辅助索引对应主键rowid。进行排序后回表查询,随机IO转顺序IO ...

  • MRR与ICP优化

    mysql5.6对于辅助索引的查询进行了优化 MRR(Multi-Range Read) 优化点 把离散的随机io...

  • 优化的道路永无止境——Mysql的ICP及MRR

    在讲ICP和MRR之前,我们先了解一下MySQL的架构。于本文的重点并不在架构细节上,所以让我们直接看关键部分,存...

  • MRR MAP DCG

    最近在研究,然而还没弄懂。。。嗯。。。

  • iOS - 老生常谈内存管理(二):从 MRC 说起

    前言   MRC全称Manual Reference Counting,也称为MRR(manual retain-...

网友评论

      本文标题:MySQL MRR

      本文链接:https://www.haomeiwen.com/subject/favcnltx.html