线程池

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

在大连接高并发场景下,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

线程池 oltp_point_select

线程池

金山云,开启您的云计算之旅

免费注册