5.5.3 MySQL企业级线程池

笔记

MySQL Enterprise Thread Pool 是商业产品 MySQL Enterprise Edition 中包含的扩展。要了解有关商业产品的更多信息, 请访问 https://www.mysql.com/products/

MySQL 企业版包括 MySQL 企业线程池,使用服务器插件实现。MySQL 服务器中的默认线程处理模型为每个客户端连接使用一个线程来执行语句。随着越来越多的客户端连接到服务器并执行语句,整体性能会下降。线程池插件提供了另一种线程处理模型,旨在减少开销并提高性能。该插件实现了一个线程池,通过有效管理大量客户端连接的语句执行线程来提高服务器性能。

线程池解决了每个连接使用一个线程的模型的几个问题:

  • 过多的线程堆栈使得 CPU 缓存在高度并行执行的工作负载中几乎毫无用处。线程池促进线程堆栈重用以最小化 CPU 缓存占用空间。

  • 由于并行执行的线程太多,上下文切换开销很高。这也对操作系统调度器提出了挑战。线程池控制活动线程的数量,以将 MySQL 服务器内的并行性保持在它可以处理的级别,并且适合执行 MySQL 的服务器主机。

  • 并行执行的事务太多会增加资源争用。在InnoDB中,这增加了持有中央互斥锁所花费的时间。线程池控制事务何时开始以确保不会有太多并行执行。

其他资源

第 A.15 节,“MySQL 5.7 常见问题解答:MySQL 企业线程池”