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

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

A.15 MySQL 5.7常见问题:MySQL Enterprise Thread Pool

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

A.15.1。

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

MySQL线程池是一个MySQL Server插件,它扩展了MySQL Server的默认连接处理功能,以限制同时执行的语句/查询和事务的数量,以确保每个都具有足够的CPU和内存资源来满足其任务。对于MySQL 5.7,Thread Pool插件包含在MySQL Enterprise Edition,商业产品中。

MySQL Server中的默认线程处理模型使用每个客户端连接的一个线程执行语句。随着更多客户端连接到服务器并执行语句,整体性能降低。线程池插件提供替代的螺纹处理模型,旨在减少开销并提高性能。线程池插件通过有效地管理大量客户端连接的语句执行线程来增加服务器性能,尤其是在现代多CPU /核心系统上。

有关更多信息,请参阅第5.5.3节“mysql企业线程池”

A.15.2。

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

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

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

A.15.3。

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

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

下面将介绍通过MySQL连接器的MySQL连接池第27章,连接器和API.

A.15.4。

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

考虑最佳线程池用例的一些拇指规则:

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

如果您正在使用Innodb_Thread_Concurrency.要限制同时执行语句的数量,您应该发现线程池解决了相同的问题,只能通过分配与线程组的连接,然后基于事务内容,用户定义的名称等排队执行,等等。

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

要了解更多,请查看第5.5.3.4节“线程池调整”

A.15.5。

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

线程池具有许多影响其性能的用户案例驱动配置参数。要了解这些和调整的提示,请参阅第5.5.3.4节“线程池调整”