繁体   English   中英

连接池和max_connection关系

[英]Connection pool and max_connection relation

我正在使用MySQL数据库,并且有一个C#应用程序,该应用程序具有运行查询的并行线程。 根据MySQL Workbench 3-5启用连接池后,池中将连续利用连接线程(大多数处于休眠状态)。 如果禁用连接池,则最多只能创建1个连接线程并将其杀死。

现在我的问题是,启用连接池后,它将为每个正在运行的C#应用​​程序创建3-5个连续的连接线程。 因此,如果MySQL中的max_connection设置为151,我将只能运行30个C#应用程序实例,对吗?

另外,如果我以性能为代价禁用连接池,那么我将能够运行超过151个C#应用程序实例,因为很少有C#应用程序会并行生成查询。 我在这个假设中正确吗?

通过Web服务器(Apache,Tomcat,IIS等)运行时,您可能会受到它可能运行的线程数量的支配。 (Apache具有MaxClients 。)

所有动作的单一连接是编写程序的“正常”方式。 但是您有3-5个“线程”,每个线程都有自己的连接? 如果是这样,是的,您只能使用大约30个Web服务器线程(或程序的独立调用)。

可以增加max_connections (通过更改my.cnf并重新启动)。 2000年很高,但并非不合理。

当您有几十个以上的连接实际上在执行某项操作而不是“睡眠”时,就会出现问题。 (请参阅SHOW PROCESSLIST;

MySQL连接速度很快。 “合并”还有其他问题,因此不一定弊大于利。 连接具有“状态”,包括@ variables,tmp表等,每当您请求连接时,都需要将其重置,并且该连接来自“池”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM