MySQL中链接线程的优化

MySQL链接不只能经过网络方式,还能够经过命名管道的方式,不管是哪一种方式链接MySQL,在MySQL中都是经过线程的方式管理全部客户端请求的。每个客户端链接都会有一个与之对应的链接线程。在MySQL中实现了一个Thread Cache池,将空闲的链接线程存放其中,而不是完成请求后就销毁。这样,当有新的链接请求时,MySQL首先会检查Thread Cache中是否存在空闲链接线程,若是存在则取出来直接使用,若是没有空闲链接线程,才建立新的链接线程。具体参数:缓存

Thread_cache_size:Thread Cache池中应该存放的链接线程数。网络

Thread_stack:每一个链接线程被建立时,MySQL给它分配的内存大小。当MySQL建立一个新的链接线程时,须要给它分配必定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各类状态和处理信息。ide

查看链接线程相关的系统变量的设置值: show   variables   like 'thread%';spa

 

如图,系统设置了Thread Cache池最多将缓存25个链接线程,每一个链接线程建立之初,系统分配192KB的内存堆栈给它。线程

查看系统被链接的次数及当前系统中链接线程的状态值内存

show status like 'connections';it

 

show status like '%thread%';io


系统启动到如今共接受到客户端的链接7次,共建立了1个链接线程,当前有1个链接线程处于和客户端链接的状态,而1个链接状态的线程中只有一个处于 active 状态,即只有一个正在处理客户端提交的请求,。而在Thread Cache池中共缓存了0个链接线程。
class

Thread Cache 命中率:thread

Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;

通常在系统稳定运行一段时间后,Thread Cache命中率应该保持在90%左右才算正常。

相关文章
相关标签/搜索