我是一台配备6GB RAM的MySQL服务器。我想知道myisam_sort_buffer_size和sort_buffer_size之间的区别是什么?
我已经将它们设置为以下大小:
myisam_sort_buffer_size = 8M
sort_buffer_size = 256M
请同时说明这些值是否合适或需要调整?
谢谢
sort_buffer_size:
MySQL文档:
每个需要进行排序的会话都会分配这个大小的缓冲区。 sort_buffer_size不特定于任何存储引擎,而是以一种通用的方式应用于优化。
您的sort_buffer_size值似乎非常高。默认值为2M。由于提高了性能,因此建议不要超过该值。有些人推荐更小的值,如256kB。请记住,这是每个客户端会话,而不是全局值。大的值会快速增加。
有些人建议更小的值,例如256kB。
myisam_sort_buffer_size:
MySQL文档:
在使用REPAIR TABLE或使用CREATE INDEX或ALTER TABLE创建索引时对MyISAM索引进行排序时分配的缓冲区的大小。
您的myisam_sort_buffer_size似乎很好。除非您正在使用ALTER TABLE或REPAIR TABLE等重建索引,否则不相关。
这些参数是针对每个线程的,因此请检查最大连接数。
即,使用15GB的内存。
max_connections = 1500
sort_buffer_size = 32M
我收到了mysqltuner的警告:
[--] Total buffers: 928.0M global + 32.7M per thread (1500 max threads)
[!!] Maximum possible memory usage: 48.8G (312% of installed RAM)
sort_buffer_size = 256K 是最好的选择。你可以尝试这个设置,然后重新启动 MySQL 服务器并监控几个小时,你很容易就能注意到它带来的好处。
key_buffer_size + (read_buffer_size + sort_buffer_size)*max_threads=memory used
。 - KCD