5.5.3 MySQL 企业线程池

Note

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

MySQL Enterprise Edition 包含使用服务器插件实现的 MySQL Enterprise Thread Pool。 MySQL Server 中的默认线程处理模型在每个 Client 端 Connecting 使用一个线程执行语句。随着越来越多的 Client 端连接到服务器并执行语句,整体性能下降。线程池插件提供了另一种线程处理模型,旨在减少开销并提高性能。该插件实现了一个线程池,可通过有效地 Management 大量 Client 端连接的语句执行线程来提高服务器性能。

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

  • 太多的线程堆栈使 CPU 缓存在高度并行执行工作负载中几乎无用。线程池可促进线程堆栈的重用,以最大程度地减少 CPU 缓存的占用。

  • 由于并行执行的线程过多,上下文切换开销很高。这也给 os 调度程序提出了艰巨的任务。线程池控制活动线程的数量,以将 MySQL 服务器内的并行性保持在它可以处理的水平,并且该级别适用于正在执行 MySQL 的服务器主机。

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

Additional Resources

第 A.15 节“ MySQL 5.7 FAQ:MySQL 企业线程池”