Percona Server 与 MySQL 中的线程池(第二部分)

Percona Server 与 MySQL 中的线程池(第二部分)

💡 原文英文,约1300词,阅读约需5分钟。
📝

内容提要

本文对比了Percona Server与MySQL的线程池性能。测试表明,MySQL 26.7.0与9.7.2性能差异极小。数据未完全缓存时,Percona线程池在高连接数下TPS更高;数据完全缓存时,MySQL线程池更优,TPS高22%,p95延迟低约25%。Percona对线程池参数更敏感,MySQL仅在1280以上连接数才显优势。

🔎

延伸解读

线程池参数调优的敏感度差异

Percona Server 的线程池性能对 thread_pool_size 和 thread_pool_oversubscribe 非常敏感,设置不当可能无法发挥全部潜力。例如在 32G 缓冲池下,Percona 需要将 thread_pool_size 提高到 160 才能达到最佳效果,而 MySQL 仅需 10。相比之下,MySQL 的参数变化对性能影响较小,调优负担更低。

高连接数下的性能分水岭

线程池的收益与连接数密切相关。Percona 线程池在 80 以上连接数就能显现优势,而 MySQL 线程池直到 1280 或 2560 连接数才带来明显提升。在 2G 缓冲池、2560 连接下,Percona 的 TPS 是 MySQL 的 6.2 倍。因此,低连接数场景下线程池可能并非必要。

缓冲池大小决定赢家

数据是否完全缓存会改变两个线程池的优劣。当数据未完全缓存(如 2G 或 12G 缓冲池)时,Percona 线程池在高连接数下 TPS 更高;而当数据完全缓存(32G 缓冲池)时,MySQL 线程池反超,TPS 高出 22%,p95 延迟低约 25%。选择时需根据实际工作集大小判断。

❓

Q&A

Percona Server 和 MySQL 的线程池在性能上有什么主要区别?

当数据未完全缓存时,Percona Server 线程池在高连接数下 TPS 更高;当数据完全缓存时,MySQL 线程池更优,TPS 高 22%,p95 延迟低约 25%。

MySQL 26.7.0 和 9.7.2 的线程池性能有差异吗?

测试表明,MySQL 26.7.0 与 9.7.2 的线程池性能差异极小,各配置下的性能曲线几乎重合。

在数据完全缓存的情况下,哪个线程池表现更好?

数据完全缓存(innodb_buffer_pool_size=32G)时,MySQL 线程池表现更好,TPS 达到 19,054,比 Percona Server 的 15,519 高 22%,且 p95 延迟低约 25%。

Percona Server 线程池对参数配置敏感吗?

是的,Percona Server 线程池对 thread_pool_size 和 thread_pool_oversubscribe 非常敏感,设置最优值对性能影响很大;而 MySQL 对这些参数的改变影响较小。

MySQL 线程池在什么连接数下才能显现优势?

MySQL 线程池的明显优势仅在连接数较高时(如 1280 或 2560)才显现;而 Percona Server 线程池在 80+ 连接时就能带来提升。

在数据未完全缓存时,Percona Server 线程池相比 MySQL 能提升多少 TPS?

在 innodb_buffer_pool_size=2G 且连接数为 2560 时,Percona Server 线程池的 TPS 为 2,304,是 MySQL 的 371 TPS 的 6.2 倍。

🏷️

标签

➡️

继续阅读