mysql连接池与线程池
区别
连接池是客户端进行设置
线程池是db服务端设置
连接池的作用
控制客户端频繁连接DB服务器,和销毁连接线程
线程池的优势
1.防止雪崩
2.提高性能,提升系统稳定性
架构
mysql_thread_pool被划分成一个线程(timer)和多个group,每个group又有对应的工作线程
timer线程
控制管理整个group,。。。
group组成
两个高低队列
listener
worker
线程池简化工作流程
1.客户端的请求根据threadid%thread_pool_size来决定落到哪个group
2.group中的listener监听到有新请求,加入队列或者将其转换成worker线程
3.group中的thread线程检查队列的请求,
有,处理,没有,则休眠,一直没唤醒的话,超过thread_pool_idle_timeout后,则结束线程退出
当然Group中running线程数超过thread_pool_oversubscribe+1的话,也会休眠
4.timer线程会一直检查group是否被阻塞,如果有,就唤醒worker线程或者重建