sort_buffer_size, Sort_merge_passes关系
对于事务性工作负载是通常最快这个大小设置为32K,并且也是允许的最小尺寸。您应该谨慎使用它设置为较大的值,因为这可以很容易地降低性能。
如果所有的数据进行排序不适合在指定缓冲区大小的MySQL第一种类尽可能多的数据将适合,那批写入磁盘。接下来,它排序另一批和写入操作。然后执行这些和所需的所有其他批次的基于磁盘的归并排序,使用磁盘的三个临时文件这一点。这个过程是有效的,但对于大型查询可以使用SET SESSION sort_buffer_size = 128 * 1024用于增加查询运行sort_buffer_size的值之前的会话;例如使用128K的排序缓冲器。 * 1024是有方便,因为交互式客户端不支持k或m后缀,可以在配置文件中使用。
在基于磁盘的排序方法中使用合并的数量被报告在状态变量Sort_merge_passes,购自SHOW GLOBAL STATUS; 。如果在正常生产中使用一段时间后,所报告的值是0可以肯定的是sort_buffer_size的值值不是太小,一个很好的迹象,这很可能是太大。在实践中人们往往将其设置为比最佳的许多工具更大的不恰当建议增加它的值。不要只是sort_buffer_size的值增加,直到Sort_merge_passes是0。这几乎肯定会产生大小比最快的代价大得多。对于非常鲁莽,力求有一个繁忙的服务器上每正常运行时间的第二个至少几Sort_merge_passes。可能还有更多。为了更准确,你需要你的标杆查询和建议结合你的实际。
对于常见的Linux内存分配方法用于分配存储器可以改变到较慢的方法超过256K 512K或和2M的尺寸。才去对这些阈值之一,您应该使用特别注意,内存分配成本可能大大超过刚好低于阈值。
运行基准建议只读或大部分工作负载可以期待在Linux上使用一个32K sort_buffer_size的值,而不是256K 有 1-2%的性能提升。更大的尺寸比256K将有更大的副作用。好处将取决于使用的操作系统的内存分配器不同,但要以此为约很可能是适当的值很好的指导。
MySQL的5.6有LIMIT的查询只保留目前匹配缓冲限位行的优化。这避免了需要排序的整个结果集。如果您使用较大的排序缓冲区,以提高速度,经过的LIMIT查询可能会发现不再是有帮助的。
配置文件和服务器默认经常使用比用于事务处理的最优值更大的值。这样的值可以提高查询效率低下的表现,这是可能的,作为临时措施可能会发现一个或两个有用的MB的值,直到能够识别并调整涉及到的查询。如果实际应该运行查询,而不是设置全局值,使所有其他查询那种小数据量的慢之前设置会话值。
Linux的glibc的malloc的内部变量
在256K或512K的阈值是MALLOC_MMAP_THRESHOLD,其中的glibc malloc的从使用其堆使用MMAP改变点。这种规模之后分配时间可以大约慢40倍。所有会话缓冲受此影响,不只是排序缓冲器。
用glibc 5.4.23 malloc的调节变量在这些环境变量暴露开始:
MALLOC_TRIM_THRESHOLD_
MALLOC_TOP_PAD_
MALLOC_MMAP_THRESHOLD_
MALLOC_MMAP_MAX_
MALLOC_CHECK_
在极少数情况下,会发现启动MySQL调整如何释放malloc的内存之前是非常有用的调整一个或多个的这些。我们不建议这样的正常使用,只有当找到的默认方式有些不常见的问题是malloc的适用于特定工作负载。
sort_buffer_size, Sort_merge_passes关系的更多相关文章
- mysql 参数:[read_buffer_size] [sort_buffer_size] [read_rnd_buffer_size] [tmp_table_size]---图解
http://imysql.cn/2008_09_27_deep_into_mysql_sort_buffer http://my.oschina.net/realfighter/blog/36442 ...
- sort_buffer_size:
sort_buffer_size: 每个session 必须执行一个排序 分配一个 这个大小的buffer. sort_buffer_size 不特定的对于任何存储引擎适用于一般的优化方式. sort ...
- More on understanding sort_buffer_size
There have been a few posts by Sheeri and Baron today on the MySQL sort_buffer_size variable. I want ...
- myisam_sort_buffer_size vs sort_buffer_size
Q: I am MySQL on server with 6GB RAM. I need to know what is the difference between myisam_sort_buff ...
- Angular2入门系列教程3-多个组件,主从关系
上一篇 Angular2项目初体验-编写自己的第一个组件 好了,前面简单介绍了Angular2的基本开发,并且写了一个非常简单的组件,这篇文章我们将要学会编写多个组件并且有主从关系 现在,假设我们要做 ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 页面中多个script块之间的关系
一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...
- Android Ormlite 学习笔记2 -- 主外键关系
以上一篇为例子,进行主外键的查询 定义Users.java 和 Role.java Users -- Role 关系为:1对1 即父表关系 Role -- Users 关系为:1对多 即子表关系 下面 ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
随机推荐
- Java字符串之间拼接时,如果有null值,则会直接拼接上null
package com.fgy.demo; public class demo06 { public static void main(String[] args) { String str1 = & ...
- junit4的进一步探讨
上次只是大概记录了下junit4几个常见标签的用法. 在这篇文章中,我们来进一步分析junit4的用法. 1.断言 junit4中一个很常见的用法就是断言.说到断言,大家再熟悉不过了.不过也许有的朋友 ...
- go 学习 (一):环境配置
Go 下载地址:https://golang.google.cn/dl/ 右键我的电脑 --> 左上方 “高级系统设置” ---> 环境变量 --> 第二个菜单栏 “系统变 ...
- 【批处理】choice命令,call 命令,start 命令,rem
[1]choice命令简介 使用此命令可以提示用户输入一个选择项,根据用户输入的选择项再决定执行具体的过程. 使用时应该加/c:参数,c: 后应写提示可输入的字符或数字,之间无空格.冒号是可选项. 使 ...
- Xamarin.Forms 开发热加载利器 HotReload 推荐
https://github.com/AndreiMisiukevich/HotReload
- Python配置环境变量
Python安装完成之后,运行cmd(win+R): 在控制台中输入Python,若安装完成,会在控制台中打开Python: 如果Python未添加至环境变量,则会提示"python不是 ...
- tengine负载均衡高可用配置
环境 Tengine-master:192.168.109.100 Tengine-slave:192.168.109.101 tomcat01:192.168.109.102 tomcat02:19 ...
- 【BIRT】汉化设计器
点击下面文字即可下载汉化包 birt汉化_plugins.rar 下载完成之后,解压: 将上述文件copy到目录../eclipse/plugins/下即可 文件复制后,重新启动eclipse,则已经 ...
- python安装redis库
pip install redis 没有相应的资源 可以到redisio上找到clients, https://redis.io/clients 如下所示 下图中带黄五角星的为官方推荐的: 下 ...
- 【Qt开发】vs2017+qt5.x编译32位应用
概述 最近有同学私信我,问如何使用vs2017+qt5.10编译出32位的应用,需要使用msvc2017_x86的插件,然而qt官网并没有提供,只能使用源码编译生成msvc2017_x86插件,使用n ...