线程池

最近更新时间:2021-01-25 19:09:04

查看PDF

在大连接高并发场景下,MySQL性能会出现严重衰减,金山云KingSQL通过线程池功能,大幅提高在高并发场景下的处理效率,保障数据库高效稳定输出。

MySQL默认为一个连接创建一个线程,在大连接高并发场景下,会创建较多的工作线程,导致各线程互相竞争,CPU时间片在大量线程间频繁调度,上下文反复切换,造成较多的CPU资源消耗,严重降低MySQL吞吐。

KingSQL通过线程池,使工作线程和连接不再一一绑定,通过工作线程在连接间的复用,避免创建过多线程,始终将工作线程数控制在最佳线程数附近,从而在不影响中低并发处理效率的同时,大幅提高了高并发场景下的处理能力,同时给予DDL、监控信息查询等操作更高的优先级,确保在业务高负载时能够对数据库进行稳定的监控和管理维护工作。

限制条件

实例版本为KingSQL内核版

如需升级,请联系客服。

适用场景

  • 连接多但请求并发低时,通过连接复用,避免创建大量空闲线程,减少系统资源开销。
  • 连接多且请求并发高时,限制创建超过数据库服务处理能力的线程,减少线程间上下文切换,从而提高CPU资源利用效率,增加整体吞吐。

参数配置

参数 含义及配置值
thread_handling 配置线程池选项
取值范围:
pool-of-threads:开启线程池
one-thread-per-connection:一个连接一个线程
no-threads:一个线程处理所有请求
默认值:one-thread-per-connection
threadpool_max_threads 整个线程池最大线程数,总线程数超过此值时,不会再创建线程(极端场景除外)
取值范围:1 - 10000
默认值:10000
threadpool_idle_timeout 工作线程空闲的超时时间,超过此时间会自动销毁
取值范围:1 - UINT_MAX
默认值:60 (秒)

性能测试结果

使用sysbench测试,结果如下
oltp_read_write、oltp_write_only

image.png
oltp_point_select

image.png

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

  • 内容不全,不深入
  • 内容更新不及时
  • 描述不清晰,比较混乱
  • 系统或功能太复杂,缺乏足够的引导
  • 内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈