MySQL 线程池
程序员文章站
2022-06-11 13:09:20
...
MySQL 采用多线程来处理并发的连接,通过 mysqlreport 中的 Threads 部分,我们可以看到线程创建的统计结果:
每秒创建43.6个线程,虽然创建线程的开销不值一提,但是当系统比较繁忙的时候,我们当然不希望再给它添麻烦。
一个比较好的办法是在应用中尽量使用持久连接,这将在一定程度上减少线程的重复创建。另一方面,从上面的 Cache = 0 可以看出,这些线程并没有被复用,我们可以在 my.cnf 中设置一下选项:
thread_cache_size = 100
这使得 MySQL 可以缓存 100 个线程。随后我们获得新的 mysqlreport 报告,Threads 部分如下所示:
可以看到,MySQL 在长达5天多的时间里,平均每秒处理 45.1 个连接,但是一共只创建了 186 个线程,线程池的命中率为 100%。