- A.15.1. 什么是线程池,它解决了什么问题?
- A.15.2. 线程池如何限制和管理并发会话和事务以实现最佳性能和吞吐量?
- A.15.3. 线程池与客户端连接池有什么区别?
- A.15.4. 什么时候应该使用线程池?
- A.15.5. 是否有推荐的线程池配置?
A.15.1. |
什么是线程池,它解决了什么问题? |
MySQL 线程池是一个 MySQL 服务器插件,扩展了 MySQL 服务器的默认连接处理能力,以限制并发执行语句/查询和事务的数量,以确保每个语句/查询和事务都有足够的 CPU 和内存资源来完成其任务。对于 MySQL 8.3,Thread Pool 插件包含在 MySQL Enterprise Edition 中,这是一个商业产品。 MySQL 服务器的默认线程处理模型使用一个线程来执行每个客户端连接。当更多客户端连接到服务器并执行语句时,总体性能会下降。Thread Pool 插件提供了一个替代的线程处理模型,旨在减少开销并提高性能。Thread Pool 插件通过高效地管理大量客户端连接的语句执行线程,提高了服务器性能,特别是在现代多 CPU/核心系统上。 有关更多信息,请参阅 第 7.6.3 节,“MySQL Enterprise Thread Pool”。 |
|
A.15.2. |
线程池如何限制和管理并发会话和事务以实现最佳性能和吞吐量? |
线程池使用“分而治之”的方法来限制和平衡并发性。与 MySQL 服务器的默认连接处理不同,线程池将连接和线程分离,因此没有固定的连接和执行语句的关系。然后,线程池将客户端连接分配到可配置的线程组中,并根据工作的性质对其进行优先级和排队。 有关更多信息,请参阅 第 7.6.3.3 节,“Thread Pool Operation”。 |
|
A.15.3. |
线程池与客户端连接池有什么区别? |
MySQL 连接池在客户端操作,以确保 MySQL 客户端不需要不断地连接和断开连接到 MySQL 服务器。这是为了减少连接和断开连接的开销,并提高性能。MySQL 连接池没有 visibility 到后端 MySQL 服务器的查询处理能力或负载。相比之下,线程池在 MySQL 服务器端操作,旨在管理来自客户端连接的并发连接和查询的执行。由于职责分离,MySQL 连接池和线程池是正交的,可以独立使用。 MySQL 连接池通过 MySQL 连接器实现,详见 第 31 章,《Connectors and APIs》。 |
|
A.15.4. |
什么时候应该使用线程池? |
有几个规则可以考虑使用线程池的最佳用例: MySQL 如果您使用 最后,如果您的工作负载主要由短查询组成,那么线程池将是有益的。 要了解更多信息,请参阅 第 7.6.3.4 节,“Thread Pool Tuning”。 |
|
A.15.5. |
是否有推荐的线程池配置? |
线程池具有多个用户驱动的配置参数,这些参数会影响其性能。要了解这些参数和调整提示,请参阅 第 7.6.3.4 节,“线程池调整”。 |