sort_buffer_size join_buffer_size read_rnd_buffer read_buffer_size
来源:2-22 内存配置相关参数

苦瓜苦也
2018-12-02
sort_buffer_size 排序缓冲区的尺寸。定义每一个线程使用的排序缓存区大小。mysql并不是在连接数初始化的时候就给每个缓存区分配内存。只有在查询,需要排序操作。才会给每个缓冲区分配内存。一旦查询需要查询,分配所有指定参数的值。如果sort_buffer_size设置100M,如果有100个连接数,就会占用到10G的内存。
join_buffer_size 连接缓冲区的大小,如果一个查询中,关联多张表,会对每个关联分配一个连接缓冲,所以每个查询会有多个缓冲。
read_buffer_size 当myisam表进行全表扫描,分配读缓冲池大小,当mysql读需要才会分配。
read_rnd_buffer 缓冲索引
**这4个值的大小 用什么依据来设置?
还有mysql默认的内存值大小是多少?**
谢谢
写回答
1回答
-
sqlercn
2018-12-02
这几个值的设置要跟据业务所使用的SQL而订,但是总体上有一个公式,如下
SELECT ((@@key_buffer_size+@@innodb_buffer_pool_size+@@innodb_log_buffer_size++@@net_buffer_length+@@query_cache_size)/1024/1024/1024)+((@@sort_buffer_size+@@myisam_sort_buffer_size+@@read_buffer_size+@@join_buffer_size+@@read_rnd_buffer_size+@@thread_stack)/1024/1024/1024*@@max_connections);
这个公式得出的值不能超过系统的可用内存大小,至于MySQL的默认配置不同版本也会有些不同,具体可以参考所使用版本的手册。以MySQL5.7为例如下
https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html
032019-03-28
相似问题