低于5.6版本的Mysql显示变量'sort_buffer_size‘和'myisam_sort_buffer_size’。然而,当升级到MySQL5.6时,除了之前的两个版本外,现在还显示了‘innodb_sort_buffer_size’。
所以实际上sort_buffer_size和innodb_sort_buffer_size之间的区别是什么。它是替换变量或新的不同变量。
如果这是重复的问题,请指点我满意的解决方案。
发布于 2014-06-11 23:31:22
如文档here中所写的,
innodb_sort_buffer_size指定在创建InnoDB索引期间用于排序数据的排序缓冲区的大小。
而sort_buffer_size只是一个每个连接的变量,不属于任何特定的存储引擎。
发布于 2018-12-08 10:16:12
有关sort_buffer_size的更多信息
“在Linux上,有256KB和2MB的阈值,较大的值可能会显著减慢内存分配”--来自文档
这是因为,当该值超过阈值时,软件会使用mmap()来分配新的mem,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.318s
512K : 1.944s
3M : 2.412s
而且无论您使用的是哪种存储引擎,sort_buffer_size都只适用于ORDER BY或GROUP BY等排序操作。而innodb_sort_buffer_size 只有在向innodb表添加索引时才能使用。innodb排序缓冲区在添加索引后立即释放。
https://stackoverflow.com/questions/24166760
复制相似问题