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/

转载于:https://blog.51cto.com/iamadba/1730503

链接: link.

MySQL数据库关于read_rnd_buffer_size参数相关推荐

  1. mysql数据库密码安全参数_MySQL 密码参数配置与修改 validate_password

    MySQL 密码参数配置与修改 validate_password 场景 通过root用户创建travel_agency数据库,目标是,新建一个用户然后对仅对该用户开放travel_agency数据库 ...

  2. 数据库服务器配置参数修改,MySQL数据库服务器端核心参数详解和推荐配置2

    l  innodb_commit_concurrency 含义:同一时刻,允许多少个线程同时提交InnoDB事务,默认值为0,范围0-1000. 0      - 允许任意数量的事务在同一时间点提交: ...

  3. jmeter连接mysql数据库并传递参数

    1.jmeter添加jdbc驱动 2.线程组--配置元件下添加JDBC Connection Configuration并配置数据库地址 3.点击JDBC Request请求,并输入查询条件 注:响应 ...

  4. mysql数据库前端缓存_MySQL数据库性能优化--缓存参数优化

    在平时被问及最多的问题就是关于 MySQL 数据库性能优化方面的问题,所以最近打算写一个MySQL数据库性能优化方面的系列文章,希望对初中级 MySQL DBA 以及其他对 MySQL 性能优化感兴趣 ...

  5. MySQL数据库如何解决大数据量存储问题

    FROM http://blog.csdn.net/likika2012/article/details/38816037 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存 ...

  6. MySQL性能优化之参数配置

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

  7. MySQL性能优化之参数配置 - 愤怒的码农 - 博客园

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

  8. PHP访问mysql的常用函数,PHP操作MySQL数据库常用函数

    PHP操作MySQL数据库常用函数 php操作mysql数据库,俗称天龙八步: 第一步:连接数据库 第二步:判断连接错误 第三步:选择数据库 第四步:设置字符集 第五步:准备SQL语句 第六步:执行并 ...

  9. 利用WampServer挂载MySQL数据库

    该笔记的目的是引导读者利用WampServer将MySQL中搭建的本地数据库显示到网页中.不同于其他教程,该笔记假定读者事先下载并安装了MySQL Server,并借此熟悉了MySQL基本语法,并建立 ...

最新文章

  1. redis删除过期key的算法_面试官别再问我Redis内存满了该怎么办了
  2. (筆記) 如何使用Visual C++ 6.0開發Win32 DLL? (C/C++) (VC++)
  3. 网络营销外包——网络营销外包专员对网站标题修改都是有原因的
  4. boost::describe模块实现打印枚举的测试程序
  5. vue_prop单向数据流
  6. 请编写一个程序,用于统计字符串中每个字母的出现次数(字母忽略大小写),统计出结果后,请按照{'a':3,'b':2}的格式输出。
  7. 苹果iPad mini 6更多细节曝光:全面屏加持 搭载A14/A15芯片
  8. gps高斯utm_高斯-克吕格投影与UTM投影
  9. PID神经网络控制【神经网络二十六】
  10. 佳能mf4400打印机无线服务器,佳能Canon imageCLASS MF4400 驱动
  11. Windows使用WakeOnLan配置【较详细】
  12. CSS实现兼容浏览器的文字阴影效果
  13. 米兔机器人恐龙拼图手册_米兔积木机器人(多形态组合、自平衡系统、App联动)...
  14. 被华策、欢瑞等甩下,唐人影视往日荣光已成回忆?
  15. flex 布局,省略号失效
  16. 系统注册表方式修改背景颜色
  17. 影刀RPA自动化学习和部分问题解决方式
  18. Python爬取360手机助手评论——以百度地图为例
  19. 差分隐私 深度学习_深度学习中的差异隐私
  20. Java流程控制——用户交互Scanner

热门文章

  1. Google 天气预报 API
  2. 奥里给,干了兄弟们。
  3. 【word】分节符的作用
  4. 计算机自考本科好还是it培训好,自考本科文凭有用吗|自考怎么样
  5. DEKRA德凯新设立首席数字官、首席运营官,任命两位新成员加入董事会
  6. 安装VMware Workstation
  7. 强大的jqGrid!
  8. 华硕笔记本r414u怎么安装键盘_华硕R414UV7200笔记本安装win7系统操作方法
  9. zoj3716Ribbon Gymnastics
  10. 【分治思想】12627 Erratic Expansion