Sort_Buffer_Size
它是一个connection级参数,在每个connection(session)第一次需要使用这个buffer的时候,一次性分配设置的内存。
#Sort_Buffer_Size
并不是越大越好,由于是connection级的参数,过大的设置+高并发可能会耗尽系统内存资源。例如:500个连接将会消耗
500*sort_buffer_size(8M)=4G内存
#Sort_Buffer_Size 超过2KB的时候,就会使用mmap() 而不是 malloc()
来进行内存分配,导致效率降低。
#属重点优化参数
sort_buffer_size = 8M
read_buffer_size
该变量控制这一缓冲区的大小。如果对表的顺序扫描请求非常频繁,并且你认为频繁扫描进行得太慢,可以通过增加该变量值以及内存缓冲区大小提高其性能。
read_buffer_size = 4M
用于限制server接受的数据包大小,设置过小导致记录写入失败
有时候大的插入和更新会受max_allowed_packet
参数限制,导致写入或者更新失败。
Table_open_cache
该项表示描述符缓存大小,可减少文件打开/关闭次数;用于设置表高速缓存的数目。每个连接进来,都会至少打开一个表缓存。因此,
table_cache 的大小应与 max_connections 的设置有关。例如,对于 200
个并行运行的连接,应该让表的缓存至少有 200 × N ,这里 N
是应用可以执行的查询的一个联接中表的最大数量。此外,还需要为临时表和文件保留一些额外的文件描述符。
一般Open_tables
/ Opened_tables >= 0.85Open_tables
/ table_cache <= 0.95