8.2.1.13 Multi-Range Read Optimization 多个range 读优化
8.2.1.13 Multi-Range Read Optimization 多个range 读优化 读记录使用一个range scan 在一个secondary index 可以导致很多的随机磁盘访问 对于基表当表是大的 不是存储在storage 引擎的cache里。 使用Disk-Sweep Multi-Range Read (MRR) 优化, MySQL 尝试降低堆积磁盘访问的数量对于range scan 通过首先只扫描索引和收集相关行的keys 然后keys 是存储和最终记录是从基表被检索使用主键的顺序。 Disk-sweep MRR是降低 随机磁盘访问的数量和完成一个更加有顺序的扫描 多范围读优化提供这些好处: 1. MRR 让数据记录被顺序的访问相比随机顺序, 基于索引元组。 server 得到一组index 元组集 满足查询条件, 排序它们更具数据记录ID顺序,使用排序的元组来按顺序的检索数据。 这个让数据访问更加有效和更便宜 MRR 启用请求的批量处理对于key 访问需要访问数据记录通过index元组, 比如range index scans和等价关联 使用索引用于关联属性。 MRR 遍历一个index range 的顺序来得到合格的index tuples. 随着那些结果的积累,它们是用于访问相应的数据记录。它是不必要获得所有的index tuples 在开始读取数据记录之前 下面的情景说明当MRR 优化可以是有利的 场景A: MRR 可以用于InnoDB 和MyISAM 表用于index range scans和等值连接操作 1. index 元组的一部分是积累在buffer里 2.元组在buffer 是按它们的数据row id排序的 3. 数据记录是通过 排序的index 元组顺序访问 方案 B:MRR 可以用于NDB 表用于多个范围index scans 或者当执行一个等值连接通过一个属性 1. ranges 的一部分, 可能简单的key 范围, 是累计在一个Buffer 在某个节点 当查询被提交时 2. range 是被发送到执行节点访问数据记录 3. 访问的记录是被打包到packages 发送会回个中心节点 4.接收到的数据是被放置到buffer里 5.数据是从Buffer 读取 当MRR 被使用,额外的列是EXPLAIN 输出显示MRR: InnoDB 和MyISAM 不使用MRR 如果full table 记录不需要被访问来产生查询结果 这种情况如果结果可以产生整个依据信息在index元组里(通过覆盖索引) MRR 不能提供任何好处 可以使用MRR的例子,假设有一个索引在(key_part1, key_part2): SELECT * FROM t
WHERE key_part1 >= 1000 AND key_part1 < 2000
AND key_part2 = 10000; index 有元组组成(key_part1, key_part2) ,排序首先按key_part1 然后按key_part2 没有MRR, 一个index 扫描覆盖所有的index tuples 对于key_part1 范围从1000到2000, 不管key_part2 值在那些元组里。 scan 做额外的工作来延伸 元组在范围包含 key_part2大于1000 使用MRR, scan 是分成多个范围,每个对于一个key_part1 的单个值(1000,1001,....,1999). 每次那些扫描只需要查询元组具有 key_part2 = 10000 如果index 包含 很多元组对于 key_part2 不在10000,MRR 结果在很多少的index tuples 被读取
8.2.1.13 Multi-Range Read Optimization 多个range 读优化的更多相关文章
- 为什么range不是迭代器?range到底是什么类型?
		
迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在.在关于迭代器的系列文章中(链接见文末),我至少提到了 23 种生成迭 ...
 - 列表中使用嵌套for循环[i*j for i in range(3) for j in range(3)]
		
利用嵌套for循环形成一个新列表 [i*j for i in range(3) for j in range(3)]相当于如下代码 li=[] for i in range(3): for j in ...
 - Individual Project - Word frequency program - Multi Thread And Optimization
		
作业说明详见:http://www.cnblogs.com/jiel/p/3978727.html 一.开始写代码前的规划: 1.尝试用C#来写,之前没有学过C#,所以打算先花1天的时间学习C# 2. ...
 - Table.Range保留中间指定的….Range/Middle(Power Query 之 M 语言)
		
数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...
 - 前端资讯周报 3.13 - 3.19: WebVR来了!以及如何优化scroll事件性能
		
每周一我都会分享上一周我订阅的技术站点中,和解决问题的过程中阅读到的值得分享的文章.这是迫使我学习的一个动力 本周推荐 Minecraft in WebVR with HTML Using A-Fra ...
 - 6.13校内互测 (DP 带权二分 斜率优化)
		
丘中有麻plant 改自这儿,by ZBQ. 还有隐藏的一页不放了.. 直接走下去的话,如果开始时间确定那么到每个点的时间确定,把time减去dis就可以去掉路程的影响了. 这样对于减去d后的t,如果 ...
 - MySQL Range Optimization
		
8.2.1.3 Range Optimization MYSQL的Range Optimization的目的还是尽可能的使用索引 The range access method uses a sing ...
 - [LeetCode] Range Sum Query - Mutable 区域和检索 - 可变
		
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...
 - Python  中xrange和range区别
		
先看看Python help()的说明 help(range) Help on built-in function range in module __builtin__: range(...) ra ...
 
随机推荐
- linux 虚拟机下配置tomcat
			
1.在wind系统下载tomcat,tomcat8版本的需要jdk1.8以上的才支持. 下载位置:http://tomcat.apache.org/download-80.cgi -> core ...
 - JS~js里实现队列与堆栈
			
在面向对象的程序设计里,一般都提供了实现队列(queue)和堆栈(stack)的方法,而对于JS来说,我们可以实现数组的相关操作,来实现队列和堆栈的功能,看下面的相关介绍. 一 看一下它们的性质,这种 ...
 - motan源码分析一:服务发布及注册
			
motan是新浪微博开源的服务治理框架,具体介绍请看:http://tech.sina.com.cn/i/2016-05-10/doc-ifxryhhh1869879.shtml. 本系列的文章将分析 ...
 - git小技巧--提取/合并某分支的部分文件
			
软件开发基本都是多个feature分支并行开发,而在上线前有可能某个分支的开发或测试还没有完成,又或者是产品调整,取消了该分支功能的上线计划,我们在release前不合并该分支即可,然而如果该分支中的 ...
 - Unity3D——窗体介绍
			
这是本人第一次的Unity的博客,主要还是依据雨松MOMO的视频来进行的,由于感觉视频比較直观,对于入门比較快,再加上自己有对应的编程基础,如今看书的话效率不高,所以先看几个视频了解一下大体的流程,感 ...
 - [Openstack]使用devstack自己主动化安装
			
os环境为: ubuntu14.04 安装步骤: 更新系统软件包: sudo apt-get dist-upgrade #出现无法訪问到ubuntu官网的错误. 安装git: sudo apt-get ...
 - STL之hash_set和hash_map
			
Contents 1 hash_set和hash_map的创建与遍历 2 hash_set和hash_map的查找 3 建议 一句话hash_set和hash_map:它们皆由Hashtable(St ...
 - 简单dp ---HDU3485 Count 101
			
题目大意:让求长度为n的0 和 1 构成的串中不包含101子串的个数有多少. 这个题当时想了好久,以为是一个规律题,一直在推规律,最后还是wa了,上网一看原来是dp问题, 不过确实递推式挺巧妙的. 递 ...
 - DotNet中的计时器线程计时器
			
转载自:http://hi.baidu.com/wingingbob/item/9f1c9615f3b24d5f2b3e225c 基于多线程设计,计时器工作在ThreadPool线程上,存在事件的重入 ...
 - vsftp关于"550 create directory operation failed"问题解决
			
前提: 昨天晚上配置好了vsftp, 但登陆后,除了浏览,什么也干不了.(如新建文件/文件夹, 删除文件, 重命名等都不可操作) 都是弹出 "550 create directory ope ...