首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sort_buffer_size vs innodb_sort_buffer_size

sort_buffer_size vs innodb_sort_buffer_size
EN

Stack Overflow用户
提问于 2014-06-11 23:23:27
回答 2查看 10.6K关注 0票数 3

低于5.6版本的Mysql显示变量'sort_buffer_size‘和'myisam_sort_buffer_size’。然而,当升级到MySQL5.6时,除了之前的两个版本外,现在还显示了‘innodb_sort_buffer_size’。

所以实际上sort_buffer_size和innodb_sort_buffer_size之间的区别是什么。它是替换变量或新的不同变量。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-11 23:31:22

如文档here中所写的,

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

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

票数 6
EN

Stack Overflow用户

发布于 2018-12-08 10:16:12

有关sort_buffer_size的更多信息

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

这是因为,当该值超过阈值时,软件会使用mmap()来分配新的mem,mmap()会很慢,而不是malloc()。

下面是一个测试用例:

代码语言:javascript
复制
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

reference(in Chinese)

而且无论您使用的是哪种存储引擎,sort_buffer_size都只适用于ORDER BYGROUP BY等排序操作。而innodb_sort_buffer_size 只有在向innodb表添加索引时才能使用。innodb排序缓冲区在添加索引后立即释放。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24166760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档