sort_buffer_size vs innodb_sort_buffer_size

时间:2014-06-11 15:23:27

标签: mysql

Mysql版本< 5.6显示变量'sort_buffer_size'和'myisam_sort_buffer_size'。 但是当升级到mysql 5.6时,除了之前的版本之外,它现在还显示'innodb_sort_buffer_size'。

那么sort_buffer_size与innodb_sort_buffer_size之间的区别是什么?它是替代品或新的不同变量。

如果这是重复的问题,请指出我满意的解决方案。

2 个答案:

答案 0 :(得分:5)

如文档here中所述,

innodb_sort_buffer_size指定在创建InnoDB索引期间用于排序数据的排序缓冲区的大小。

虽然sort_buffer_size只是一个每个连接变量,但不属于任何特定的存储引擎。

答案 1 :(得分:0)

有关sort_buffer_size的更多信息:

“在Linux上,阈值分别为256KB和2MB,其中较大的值可能会显着减慢内存分配”-来自文档

这是因为,当该值超过阈值时,软件将使用速度较慢的mmap()而不是malloc()来分配新的内存。

这是一个测试用例:

mysqlslap -uroot -h127.0.0.1 -q ' SELECT SQL_NO_CACHE * FROM sbtest ORDER BY pad LIMIT 1' -c 100 --create-schema=test -i 10

结果
sort_buffer_size:运行所有查询的平均秒数
250K:1.318秒
512K:1.944秒
3M:2.412秒

reference(in Chinese)

sort_buffer_size仅适用于ORDER BYGROUP BY之类的排序操作,无论您使用的是哪种存储引擎。当将索引添加到innodb表时,innodb_sort_buffer_size ONLY 有效。添加索引后,便会释放innodb排序缓冲区。