云数据库 MySQL 版使用 one-thread-per-connection 模式,服务端会为每一个连接指定一个线程来服务。在数据库并发连接过多的情况下,MySQL 服务器的性能会急剧下降。为解决上述问题,云数据库 MySQL 版提供了线程池(Thread Pool)功能,可以使用指定数量的服务端线程来处理大量的连接,保证服务稳定性。
云数据库 MySQL 版的 8.0.26 版本序列的实例暂不支持该功能。
用户可以通过修改如下可修改参数对线程池作出调整。
名称 | 说明 |
---|---|
loose_thread_pool_enabled | 线程池是否开启。云数据库 MySQL 版默认为 ON(打开),修改此参数需要重启实例。 |
loose_thread_pool_size | 线程组个数。云数据库 MySQL 版会根据实例规则设置一个合理的数值,修改此参数不需要重启实例。 |
loose_thread_pool_oversubscribe | 每个线程组中最多允许的线程数目。默认值为 16,修改此参数不需要重启实例。 |
用户可以通过下面的命令查询线程池状态。
mysql> show status like 'Threadpool%'; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | Threadpool_active_threads | 1 | | Threadpool_all_threads | 3 | | Threadpool_dump_threads | 0 | | Threadpool_extra_connection_count | 4 | | Threadpool_high_prio_queue_len | 0 | | Threadpool_listener_threads | 1 | | Threadpool_low_prio_queue_len | 0 | | Threadpool_sleep_threads | 1 | | Threadpool_stalled_groups_last_period | 0 | | Threadpool_wait_threads | 0 | +---------------------------------------+-------+ 10 rows in set (0.00 sec)
线程池状态变量说明:
名称 | 说明 |
---|---|
Threadpool_active_threads | 线程池活跃线程数量 |
Threadpool_all_threads | 线程池总线程数量 |
Threadpool_dump_threads | Binlog_dump线程数量 |
Threadpool_extra_connection_count | 使用管理端口登录的连接数量 |
Threadpool_high_prio_queue_len | 线程池高优先级队列长度 |
Threadpool_listener_threads | 线程池监听线程数量 |
Threadpool_low_prio_queue_len | 线程池低优先级队列长度 |
Threadpool_sleep_threads | 线程池休眠线程数量 |
Threadpool_stalled_groups_last_period | 上一个监听周期是否出现停顿 |
Threadpool_wait_threads | 线程池阻塞线程数量 |