mysql 多路范围读优化
mysql Multi_Range_Read 优化
Multi_Range_Read 这个属性是5.6版本新加入的特性,主要用于将mysql随机读取IO转换为顺序读取IO,提高mysql性能。
还有一点就是可以将范围查找转变为键值对匹配,提高查找的精确度以减少磁盘IO。
先来说第一个概念,随机IO转为顺序IO.
在没有Multi_range_read这个属性的时候,sql执行计划就是根据where条件在数据文件中找出数据,利用索引的时候,则根据索引列找出数据。
在这里还需要简单回顾一下索引的概念。因为篇幅中心,所以只简单介绍一下辅助索引和聚集索引。
辅助索引大多数时候是不能直接找出所需要的数据列的,必须根据主键索引再次查找。
请尊重知识,请尊重原创 更多资料参考请见 http://www.cezuwang.com/listFilm?page=1&areaId=906&filmTypeId=1
所以在上面的第一种情况下,根据辅助索引找出的结果集中,还必须根据主键索引找出完整数据列。由于mysql存储数据的方式,辅助索引和主键索引的顺序是不一致的,
所以 根据主键索引去查找的时候,是随机查找,效率低下。
当开启Multi_Range_read的时候,根据辅助索引查找到结果集,之后在结果集中对数据按照主键进行排序,之后根据已经有序的主键区读取数据列,这时候是顺序
读取,效率较高。
在我们使用了Multi_Range_Read这个属性的时候,sql执行计划包含 Using MRR
再来说说将范围匹配转化为键值对查找。
例如以下sql msql> select * from lay where pt1 >1000 and pt1 < 3000 and pt2 = 999;
如果我们没有Multi_Range_Read这个属性的时候,sql执行计划 是 先根据pt1的范围找出数据,然后将找出的数据再根据条件pt2过滤出来。
这样的话,就会找出很多无用的数据,增加了IO开销,这是无意义的。
当我们开启了Multi_Range_Read这个属性的时候,优化器会将查询条件转换为(1000,999),(1001,999),(1002,999)....(2999,999),这样的话就不会找出多余的数据,
减少了无用的IO,提高了性能。
如何开启这个属性呢? 我们可以通过命令 mysql> show variables like '%optimizer_switch%' 查看是否开启了这个属性。
如果mrr=on,mrr_cost_based=off 则表示始终开启MRR优化。
也可以通过命令开启 mysql>set @@optimizer_switch='mrr=on,mrr_cost_based=off';
相关推荐
navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql_cs_x64navicat111_mysql...
提高MySQL的性能:优化,备份,复制与荷载平衡
lib_mysqludf_sys 的win版本dll库
CentOS 7.5 64位下编译好的lib_mysqludf_sys.so,源文件在https://download.csdn.net/download/shaynerain/10715798,我博客 中有介绍怎么用
mysql高效实用手册,代码规范说明,mysql优化提高执行效率
尚硅谷_MySQL高级_索引单表优化案例 · 32.尚硅谷_MySQL高级_索引两表优化案例 · 33.尚硅谷_MySQL高级_索引三表优化案例 · 34.尚硅谷_MySQL高级_索引优化1 · 35.尚硅谷_MySQL高级_索引优化2 · 36.尚硅谷_...
zabbix_multi_mysql相关.docx
navicat121_mysql_cs_x64 WINDOWS X64位操作系统navicat121_mysql_cs_x64
MYSQL_性能优化篇 MYSQL_性能优化篇 MYSQL_性能优化篇 MYSQL_性能优化篇 MYSQL_性能优化篇 MYSQL_性能优化篇
tar zxvf navicat112_mysql_cs_x64.tar.gz 进入解压的目录,运行如下命令 ./start_navicat 问题一:中文乱码 解决:打开start_navicat文件 将export LANG="en_US.UTF-8"改为export LANG="zh_CN.UTF-8" 问题二:试用...
navicat150_mysql_cs_x64
MySQL_WorkBench管理操作MySQL教程,适合初学入门认识
mysql5.5.27_win32_zol.msi mysql5.5.27windows安装程序
mysql 监控 Monitoring_MySQL mysql_en mysql
48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级...
银河麒麟_飞腾_MYSQL 离线安装包,亲测可以使用
mysql 5.5 chm 中文手册,学习mysql的好帮手
MySQL_5.1_zh.chm MySQL_5.1中文说明
连接mysql数据库必备的包 没有他你连接不了mysql数据库
mysql自动备份mysql自动备份mysql自动备份