本文首发于 2023-05-04 22:07:40本文主要从功能层面对比 percona-server、mariadb、阿里云 AliSQL、腾讯 TXSQL、MySQL 企业版线程池方案,都基于 MySQL 8.0。
http://dbkernel.com/2023/05/04/mysql-threadpool-main-solutions-details/#
版本:背景
MariaDB 10.9,
Percona-Server-8.0.32-24
总结一句话,线程池更适合短连接或短查询的场景。行业方案:Percona 线程池实现
上图来源于腾讯数据库技术公众号4. worker 线程
上图来自于腾讯数据库技术公众号5. timer 线程
一种比较激进的方法就是迫使此类连接重连,在重连后作为新连接自然地切换到 Thread_pool 中,其下一个网络请求也将被 Thread_pool 应答。线程池动态切换对性能的影响:
本小节内容来源于官网手册。MariaDB 官网是基于 5.5 版本线程池测试的,也就是不支持高低优先级队列的版本。
MySQL 8.0.14 以前的版本使用 extra_port 功能(percona & mariadb),8.0.14 及之后版本官方支持了 admin_port 功能。参数区别
注意:MySQL 企业版核心方案与 MariaDB 类似,且关于差异点,官方描述较少,因此,不做对比。MariaDBPercona腾讯 TXSQL阿里云 AliSQLthread_handling线程池开关有有有类似参数 thread_handling_switch_mode (支持动态开关)有类似参数 thread_pool_enabled(支持动态开关)thread_pool_idle_timeout线程最大空闲时间,超过则退出。有有有有thread_pool_high_prio_mode 高优先级队列调度策略,支持 transactions,statements,none 三种策略有类似参数 thread_pool_priority,支持 high, low, auto 三种策略有有无thread_pool_high_prio_tickets 控制每个连接在高优先级中的票数,仅在调度模式是事务模式时生效无有有无thread_pool_max_threads 线程池最大工作线程数有有有有thread_pool_oversubscribe 每个线程组中的最大工作线程数有有有有thread_pool_size 线程组数,一般推荐设为 CPU 核心数有有有有thread_pool_stall_limit timer 线程判断线程组是否停滞(定期调用 check_stall )的时间间隔有有有有thread_pool_prio_kickup_timer 低优先队列中的语句在等待该值指定的时间后,则移入高优先级队列有无无无thread_pool_dedicated_listener 是否启用专用 listener 线程。若关闭,则 listener 有可能变为 worker。有无无无thread_pool_exact_stats 是否使用高精度时间戳有无无无thread_pool_normal_weights:查询、更新操作的目标线程比例(假定这两类操作的比重相同),即并发度= thread_pool_oversubscribe * 目标比例/100无无无有thread_pool_trans_weights:事务操作的目标线程比例,即并发度= thread_pool_oversubscribe * 目标比例/100无无无有可见:
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) | Powered by Discuz! X3.4 |