相关的文档10bet官方网站 本手册下载 从本手册中摘录

MySQL 8.0参考手册/MySQL 8.0常见问题解答/ mysql 8.0常见问题:mysql企业线程池

A.15 MySQL 8.0 FAQ: MySQL Enterprise Thread Pool

A.15.1。什么是线程池,它解决了什么问题?
A.15.2。线程池如何限制和管理并发会话和事务以获取最佳性能和吞吐量?
A.15.3。线程池如何与客户端连接池不同?
A.15.4。什么时候应该使用线程池?
A.15.5。是否有推荐的线程池配置?

A.15.1。

什么是线程池,它解决了什么问题?

MySQL线程池是一个MySQL服务器插件,它扩展了MySQL服务器默认的连接处理能力,以限制并发执行的语句/查询和事务的数量,以确保每个语句/查询和事务有足够的CPU和内存资源来完成其任务。对于MySQL 8.0,商业产品MySQL企业版中包含了线程池插件。

MySQL服务器默认的线程处理模型是每个客户端连接使用一个线程执行语句。随着越来越多的客户端连接到服务器并执行语句,整体性能会下降。线程池插件提供了一个替代的线程处理模型,旨在减少开销和提高性能。线程池插件通过有效地管理大量客户端连接的语句执行线程来提高服务器性能,特别是在现代多cpu /核系统中。

有关更多信息,请参见第5.6.3节“MySQL Enterprise Thread Pool”

A.15.2。

线程池如何限制和管理并发会话和事务以获取最佳性能和吞吐量?

线程池使用分而治之限制和平衡并发的方法。与MySQL Server的默认连接处理不同,线程池与连接和线程分隔连接,因此连接与执行从这些连接接收的语句的线程之间没有固定关系。然后,线程池在可配置的线程组中管理客户端连接,在那里它们是根据提交的工作的性质优先顺序和排队,他们是他们提交的工作。

有关更多信息,请参见第5.6.3.3节“线程池操作”

A.15.3。

线程池如何与客户端连接池不同?

MySQL连接池在客户端运行,以确保MySQL客户端不会持续连接和断开与MySQL服务器的连接。它被设计用来在MySQL客户端中缓存空闲的连接,以供其他用户在需要时使用。这将最小化在向MySQL服务器提交查询时建立和断开连接的开销。MySQL连接池不可见后端MySQL服务器的查询处理能力或负载。相比之下,线程池在MySQL服务器端运行,用于管理入站并发连接和查询的执行,因为它们是从访问后端MySQL数据库的客户端连接接收到的。由于职责的分离,MySQL连接池和线程池是正交的,可以相互独立使用。

通过MySQL连接器汇集MySQL连接池29章,连接器和api

A.15.4。

什么时候应该使用线程池?

对于最佳线程池用例,有一些经验法则需要考虑:

MySQLthreads_running.变量会跟踪当前在MySQL Server中执行的并发语句的数量。如果此变量一直超过服务器无法最佳地运行的区域(通常超过40用于InnoDB工作负载),则线程池应具有有益的,尤其是在极端并行过载情况中。

如果您使用的是innodb_thread_concurrency为了限制并发执行语句的数量,您应该发现线程池通过将连接分配给线程组,然后根据事务内容、用户定义的指定等对执行进行排队,从而解决了相同的问题,而且效果更好。

最后,如果您的工作负载主要包括短查询,则线程池应该是有益的。

要了解更多信息,请参阅第5.6.3.4节“线程池调整”

A.15.5。

是否有推荐的线程池配置?

线程池有许多用户用例驱动的配置参数,这些参数会影响线程池的性能。要了解这些和调优技巧,请参见第5.6.3.4节“线程池调整”