Thread. Pool

本文详细介绍了MySQL线程池的工作原理,包括ThreadGroup、低高优先级队列的使用,以及核心参数如thread_pool_enabled等对线程池性能的影响。特别关注了高优先级模式的选择和特定用户请求的处理策略。
摘要由CSDN通过智能技术生成

线程池是Mysql connection handler的一种区别于默认的per thread connection handler(每一个用户连接对应一个线程)thread pool通过一批分组的线程来服务用户连接

thread pool组成:
trhead group 线程组 分组管理
low priority queue 低优先级队列
high priority queue 高优先级队列
worker thread 工作线程 鉴权 处理用户请求
listener thread 监听用户连接 有新的请求到来时分发或者直接处理

核心参数:
thread_pool_enabled thread pool开关
thread_pool_size thread pool 的group数量
thread_pool_oversubscribe 每个group中最多的活跃线程数
thread_pool_max_threads 线程池中线程数量最大限制

thread 和connection的关系
thread pool中 用户连接,在开启thread pool的状态下,跟开启thread是多对多的关系,一个连接不同请求可能被不同的thread去处理,一个thread可能在不同的时间段处理不同的用户连接
在这里插入图片描述
如何判断connection进⼊⾼/低优先级队列?

  1. 根据参数thread_pool_high_prio_mode判断
    TP_HIGH_PRIO_MODE_STATEMENTS, thread pool会认定所有请求为⾼优先级
    TP_HIGH_PRIO_MODE_TRANSACTIONS, 显式事务内请求认定为⾼优先级
    TP_HIGH_PRIO_MODE_NONE,判断当前连接是否持有MDL_EXPLICIT类型的元数据信息锁
  2. 根据参数thread_pool_high_priority_users, 认为这些⽤户的请求为⾼优先级
  3. 根据参数thread_pool_high_prio_handshake,开启后,新建连接在未鉴权时优先处理
  4. 根据参数threadpool_high_prio_maintain_conn,开启后所有maintain user会⾼优先级处理,这⾥
    主要提供给管控使⽤。

COM_BINLOG_DUMP_GTID // binlog dump
COM_BINLOG_DUMP // binlog dump
COM_POLAR_LOG_DUMP // 物理复制相关
COM_POLAR_LOG_ACK // 物理复制相关
COM_RDS_PUSH_LSN // 代理监听lsn
这类线程不会占⽤thread pool中的活跃线程指标。

参考:
阿里云:https://help.aliyun.com/zh/polardb/polardb-for-mysql/user-guide/thread-pool?spm=a2c4g.11186623.0.i1
内核:https://www.bookstack.cn/read/aliyun-rds-core/81fed3723cd8562f.md

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值