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%左右才算正常。