mysql read buffer_mysql 参数read_rnd_buffer_size的真正含义
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的真正含义相关推荐
- c mysql maxpoolsize_mysql数据库参数innodb_buffer_pool_size和max_connections
接到报故,查看mysql数据库以下参数 1.innodb_buffer_pool_size 2.max_connections 该参数定义了数据缓冲区buffer pool大小,类似于oracle的d ...
- mysql双一参数_MySQL 的双1设置-数据安全的关键参数(案例分享)
mysql的"双1验证"指的是innodb_flush_log_at_trx_commit和sync_binlog两个参数设置,这两个是是控制MySQL 磁盘写入策略以及数据安全性 ...
- mysql 8 配置参数优化_MySQL性能优化之参数配置
1.目的: 通过根据服务器目前状况,修改Mysql的系统参数,达到合理利用服务器现有资源,最大合理的提高MySQL性能. 2.服务器参数: 32G内存.4个CPU,每个CPU 8核. 3.MySQL目 ...
- mysql服务器端的参数有很多_但是对于大多数初学者来说_mysql优化的重要参数 key_buffer_size table_cache...
MySQL服务器端的参数有很多,但是对于大多数初学者来说,众多的参数往往使得我们不知所措,但是哪些参数是需要我们调整的,哪些对服务器的性能影响最大呢?对于使用Myisam存储引擎来说,主要有key_b ...
- mysql设置参数不生效_关于mysql的wait_timeout参数 设置不生效的问题【转】
关于wait_timeout 有一次去online set wait_timeout 的时候发现改了不生效,如下: mysql> show variables like 'wait_timeou ...
- mysql url格式,关于MySql链接url参数的设置
最近整理了一下网上关于MySql 链接url 参数的设置,有不正确的地方希望大家多多指教: mysql JDBC URL格式如下: jdbc:mysql://[host:port],[host:por ...
- mysql异步复制参数_MySQL Replication(异步复制)基本原理
1.复制进程 Mysql的复制(replication)是一个异步的复制,从一个Mysql instace(称之为Master)复制到另一个Mysql instance(称之Slave).实现整个复制 ...
- Linux中 C++ main函数参数argc和argv含义及用法
Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...
- hibernate mysql自定义变量_hibernate 跟 MySql in的参数变量
hibernate 和 mysql in的参数变量 Mysql : select appid from mem_apps where appid in (?) 如果?=25,3 那么此语句的结果只有一 ...
最新文章
- totiseGit无法登录的问题
- Android中实现双缓冲(画板应用)和XML文件定义菜单
- 微信小程序 wx:key 提示-解决
- 编译器优化陷阱之典型代码
- TypeScript里的类型合并操作符
- openshift k8s_带有DIY的Openshift上的Spring Boot / Java 8 / Tomcat 8
- java 判断两个数是否异号
- 骗子公司陆续公布中...
- socket和http区别有哪些
- apache的tomcat负载均衡和集群配置
- CentOS7下使用yum快速安装配置oracle数据库
- Python django model 插入新增一条数据,得到create返回主键值 id
- python显示文字框_python如何使用文本框
- Office机器人2.1.763.557(Excel批量打印 Word批量打印 批量加密 批量解密 批量转换格式)...
- 基于java的客户关系管理系统的设计与实现(论文+毕业设计)(完整源码可演示)
- linux ubuntu 18.04无法输入中文、安装中文拼音输入法
- [ECCV 2020] Synthesize then Compare: Detecting Failures and Anomalies for Semantic Segmentation
- JS,统计图表大全--十一、甘特图
- Windows 组件服务我的电脑出现红色向下箭头
- 微软官方安装U盘启动盘制作方法教程