Mysql版本< 5.6显示变量'sort_buffer_size'和'myisam_sort_buffer_size'。 但是当升级到mysql 5.6时,除了之前的版本之外,它现在还显示'innodb_sort_buffer_size'。
那么sort_buffer_size与innodb_sort_buffer_size之间的区别是什么?它是替代品或新的不同变量。
如果这是重复的问题,请指出我满意的解决方案。
答案 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秒
sort_buffer_size
仅适用于ORDER BY
或GROUP BY
之类的排序操作,无论您使用的是哪种存储引擎。当将索引添加到innodb表时,innodb_sort_buffer_size
ONLY 有效。添加索引后,便会释放innodb排序缓冲区。