MySQL中InnoDB MRR优化的示例分析


这篇文章将为大家详细讲解有关MySQL中InnoDB MRR优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言MRR 是 Multi-Range Read 的简写,目的是减少磁盘随机访问,将随机访问转化为较为顺序的访问。适用于 range/ref/eq_ref 类型的查询。实现原理:1、在二级索引查找后,根据得到的主键到聚簇索引找出需要的数据
2、二级索引查找得到的主键的顺序是不确定的,因为二级索引的顺序与聚簇索引的顺序不一定一致;
3、如果没有 MRR,那么在聚簇索引查找时就可能出现乱序读取数据页,这对于机械硬盘是及其不友好的。
4、MRR 的优化方式:将查找到的二级索引键值放在一个缓存中;将缓存中的键值按照 主键 进行排序;根据排序后的主键去聚簇索引访问实际的数据文件。5、当优化器使用了 MRR 时,执行计划的 Extra 列会出现 “Using MRR” 。6、如果查询使用的二级索引的顺序本身与结果集的顺序一致,那么使用 MRR 后需要对得到的结果集进行排序。使用 MRR 还可以减少缓冲池中页被替换的次数,批量处理对键值的查询操作。可以使用命令 select @@optimizer_switch; 查看是否开启了 MRR:mrr_cost_based=on 表示是否通过 cost based 的方式来选择使用 MRR 。用 set @@optimizer_switch='mrr=on/off'; 命令开启或关闭 MRR 。select @@read_rnd开发云主机域名_buffer_size ; 参数用来控制键值的缓冲区大小,默认 256K,当大于该参数值时,执行器根据主键对已缓存的数据进行排序,然后再通过主键取得行数据。关于“MySQL中InnoDB MRR优化的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

相关推荐: Innodb 表的压缩方式

innodb 目前支持两种文件格式(innodb_file_format) Antelope 和Barracuda 5.6 默认的是 Antelope (羚羊) ,有两种“数据表格式”(row_format):Redundant(冗余)、Compact(紧凑)…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/20 11:13
下一篇 06/20 11:13

相关推荐