MySQL可插拔线程池
应用场景:MySQL生产高并发负载情况下性能急剧下降甚至不能提供服务,通过线程池MySQL可插拔线程池特性功能可保持稳定业务处理性能。
技术原理:高并发下线程数过多,CPU消耗在无效的资源竞争和频繁切换上,线程池方案通过队列方式管理任务,所有的任务先放入等待执行队列,按系统执行能力取出任务队列让CPU执行,每个CPU同时处理任务个数是有限的,一般2~5个最优,从而保持稳定的业务处理能力。另外,线程池支持线程与NUMA亲和,使数据与session关联性大的类型的业务的跨NUMA内存访问概率降低,从而提升性能。
性能指标:
OLTP TPCC场景性能原生10000并发性能下降到最优的10%左右,开启线程池功能MySQL可插拔线程池特性后,10000并发性能可维持在原生最优性能的85%。
如何使用:
- patch补丁基于开源MySQL 8.0.25开发,同时适配MySQL 8.0.30和8.0.35。另外提供基于开源MySQL 5.7.27和8.0.20的线程池patch补丁,不支持可插拔特性。
- 合入该patch后编译安装部署。
- 仅基于MySQL 8.0.25、8.0.30和8.0.35的线程池特性支持可插拔动态加载。
可插拔优势:
- 无需源码编译,使用已编译好的so动态库。
- 无需停机维护,动态加载/卸载。
- 增加更丰富的状态视图。
父主题: 方案特性