MySQL为了尽可能提高“客户端请求创建连接”这个过程的性能,实现了一个Thread Cache池,将空闲的连接线程存放其中,而不是完成请求后就销毁。这样,当有新的连接请求时,MySQL首先会检查Thread Cache池中是否存在空闲连接线程,如果存在则取出来直接使用,如果没有空闲连接线程,才创建新的连接线程
相关参数
thread_cache_size:Thread Cache池中可以存放的连接线程数
当系统启动时,不会马上就创建这么多的连接线程存放在ThreadCache池中,而是随着连接线程的创建及使用,慢慢地将用完的连接线程存入其中,直到数量达到thread_cache_size值之后,MySQL就不再继续保存用完的连接了
thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小
当MySQL创建一个新的连接线程时,须要给它分配一定大小的内存堆栈空间,以便存放客户端的请求Query及自身的各种状态和处理信息
注意,如果不是对MySQL的连接线程处理机制十分熟悉,不应该轻易调整该参数的大小,系统的默认值(192KB)基本上可以适应所有的普通应用环境
查看相关状态
Thread Cache命中率
就是通过Thread Cache池中取得连接线程的次数与系统接收的总连接次数的比率
Threads_Cache_Hit = (Connections - Threads_created) / Connections * 100%
一般来说,在系统稳定运行一段时间后,Thread Cach命中率应该保持在90%左右