mysql sort buffer和join buffer学习笔记
相关参数查看命令
SELECT @@join_buffer_size;
SELECT @@sort_buffer_size;
==========================================================================================
join_buffer_size
当我们的join是ALL,index,rang或者Index_merge的时候使用的buffer。
实际上这种join被称为FULL JOIN。
实际上参与join的每一个表都需要一个join buffer。
所以在join出现的时候,至少是2个。
join buffer的这只在mysql5.1.23版本之前最大为4G,但是从5.1.23版本开始,再出了windows之外的64为平台上可以超出4GB的限制。
系统默认是128KB。
==========================================================================================
sort_buffer_size
sort buffer是系统中对数据进行排序的时候用到的Buffer。
sort buffer同样是针对单个线程的,所以当多个线程同时进行排序的时候,系统中就会出现多个sort buffer。
我们一般可以通过增大sort buffer的大小来提高order by或者group by的处理性能。
系统默认大小时2MB,最大限制和join buffer一样。
==========================================================================================
优化建议
如果应用中,很少出现join语句,则可以不用太在乎join_buffer_size参数的设置大小。
如果join语句不是很少的话,个人建议可以适当增大join_buffer_size到1MB左右,如果内存充足可以设置为2MB。
对于sort_buffer_size来说,一般设置为2-4MB可以满足大多数应用的需求。
当然,如果应用中的排序都比较大。内存充足却并发量不是特别大的时候,也可以继续增大sort buffer size的设置。
最后需要注意的是,每一个线程都会创建自己独立的buffer而不是整个系统共享,所以设置的值过大会造成系统内存不足。
您可能感兴趣的文章:
Nodejs基础:巧用string_decoder将buffer转成string
影响MySQL性能的查询类型有哪些
Mysql join查询的优化方法
php生成gif动画的实现代码
php 压缩多个CSS文件的实现代码
C#判断文本文件编码方式的代码一例
mysql innodb优化配置方法分享
php实现gzip压缩html数据的代码
mysql innodb数据库引擎解析
mysql优化器可选开关用法详解