MySQL手册里关于read_rnd_buffer_size的解释如下:

“这个参数用在sort查询之后 ,以保证获取以顺序的方式获取到查询的数据。如果你有很多order by 查询语句,增长这值能够提升性能。”

这个解释足够简练,但没有准确的告诉我们这个参数工作在哪一层,SQL层还是引擎层?

老实说,这个参数和read_buffer_size很像,read_buffer_size仅仅用于MyISAM引擎,我下意识的也认为read_rnd_buffer_size也仅仅用于MyISAM引擎。我今天早和Monty聊了聊,学到,它不是这样的。read_rnd_buffer_size不仅仅用在MyISAM引擎,而是用在所有引擎。它用在查询后,对读取真正的数据进行优化。它是这样工作的:

sort后,得到的是行数据指针,通过key-value的形式存在,对于MyISAM是数据的偏移量,对于innodb是主键或存储重新查询的全量数据(对于小片的数据是有益的)。

假设sort后的数据使用的是行指针,并且行中的字段能够被转换成固定的大小(除了BLOB/TEXT字段外),MySQL能够使用read_rnd_buffer_size优化数据读取。

因为sort后的数据是以key-value的形式存在的,使用这些行指针去读取数据,将是以指针数据物理的顺序去读取,很大程度上是随机的方式读取数据的。MySQL从sort_buffer中读取这些行指针数据,然后通过指针排序后存入read_rnd_buffer中,之后再通过指针读取数据时,基本上都是顺序读取了。

read_rnd_buffer_size是很重要的参数,尤其工作在如下场景:

* sort_buffer中存的是行指针而不是要查询的数据。

* 查询的字段中包含Blob/Text字段。

* sort后有大量的数据行(limit 10并不能帮助你,因为MySQL是通过指针获取行数据的)

如果你取出很少字段的数据(小于max_length_for_sort_data),行数据将会全部存储在sort buffer里,因此将不需要read_rnd_buffer_size这个参数。而如果你查询的字段数据很长(这些字段很可能含有Text/Blob字段),比max_length_for_sort_data还长,read_rnd_buffer_size这个参数将派上用场。

来源:https://www.percona.com/blog/2007/07/24/what-exactly-is-read_rnd_buffer_size/

mysql read buffer_mysql 参数read_rnd_buffer_size的真正含义相关推荐

  1. c mysql maxpoolsize_mysql数据库参数innodb_buffer_pool_size和max_connections

    接到报故,查看mysql数据库以下参数 1.innodb_buffer_pool_size 2.max_connections 该参数定义了数据缓冲区buffer pool大小,类似于oracle的d ...

  2. mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)

    mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...

  3. mysql 8 配置参数优化_MySQL性能优化之参数配置

    1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...

  4. mysql服务器端的参数有很多_但是对于大多数初学者来说_mysql优化的重要参数 key_buffer_size table_cache...

    MySQL服务器端的参数有很多,但是对于大多数初学者来说,众多的参数往往使得我们不知所措,但是哪些参数是需要我们调整的,哪些对服务器的性能影响最大呢?对于使用Myisam存储引擎来说,主要有key_b ...

  5. mysql设置参数不生效_关于mysql的wait_timeout参数 设置不生效的问题【转】

    关于wait_timeout 有一次去online set wait_timeout 的时候发现改了不生效,如下: mysql> show variables like 'wait_timeou ...

  6. mysql url格式,关于MySql链接url参数的设置

    最近整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:por ...

  7. mysql异步复制参数_MySQL Replication(异步复制)基本原理

    1.复制进程 Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制 ...

  8. Linux中 C++ main函数参数argc和argv含义及用法

    Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...

  9. hibernate mysql自定义变量_hibernate 跟 MySql in的参数变量

    hibernate 和 mysql in的参数变量 Mysql : select appid from mem_apps where appid in (?) 如果?=25,3 那么此语句的结果只有一 ...

最新文章

  1. totiseGit无法登录的问题
  2. Android中实现双缓冲(画板应用)和XML文件定义菜单
  3. 微信小程序 wx:key 提示-解决
  4. 编译器优化陷阱之典型代码
  5. TypeScript里的类型合并操作符
  6. openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
  7. java 判断两个数是否异号
  8. 骗子公司陆续公布中...
  9. socket和http区别有哪些
  10. apache的tomcat负载均衡和集群配置
  11. CentOS7下使用yum快速安装配置oracle数据库
  12. Python django model 插入新增一条数据,得到create返回主键值 id
  13. python显示文字框_python如何使用文本框
  14. Office机器人2.1.763.557(Excel批量打印 Word批量打印 批量加密 批量解密 批量转换格式)...
  15. 基于java的客户关系管理系统的设计与实现(论文+毕业设计)(完整源码可演示)
  16. linux ubuntu 18.04无法输入中文、安装中文拼音输入法
  17. [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
  18. JS,统计图表大全--十一、甘特图
  19. Windows 组件服务我的电脑出现红色向下箭头
  20. 微软官方安装U盘启动盘制作方法教程

热门文章

  1. 爬取免费可用代理IP
  2. 函数 函数的基本使用 函数的四种基本形式 可选参数 函数默认参数 函数的剩余参数 构造函数() 函数重(chong)载
  3. 安装 Hana Studio
  4. Oracle切换到scott用户
  5. 华硕笔记本更换操作系统的一波三折的遭遇
  6. 家装灯线走线图_家装电路布线施工图文并茂详细解说
  7. 不要以你的现状来判断你的未来
  8. 随手查——Multisim
  9. 制作一个小的彩票系统
  10. 交叉线和直通线的做法