Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 连接池和最大连接关系_C#_Mysql_Multithreading - Fatal编程技术网

C# 连接池和最大连接关系

C# 连接池和最大连接关系,c#,mysql,multithreading,C#,Mysql,Multithreading,我使用的是MySQL数据库,有一个C应用程序,它有并行线程运行查询。当根据MySQL Workbench启用连接池时,池中会持续使用3-5个连接线程,其中大多数线程处于休眠状态。当连接池被禁用时,最多会创建一个连接线程并快速终止 现在我的问题是,当启用连接池时,它会为每个运行的C应用程序创建3-5个连续连接线程。因此,如果MySQL中的max_连接设置为151,我将只能运行我的C应用程序的30个实例,对吗 此外,如果我以牺牲性能为代价禁用连接池,我将能够运行超过151个C应用程序实例,因为只有少

我使用的是MySQL数据库,有一个C应用程序,它有并行线程运行查询。当根据MySQL Workbench启用连接池时,池中会持续使用3-5个连接线程,其中大多数线程处于休眠状态。当连接池被禁用时,最多会创建一个连接线程并快速终止

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


此外,如果我以牺牲性能为代价禁用连接池,我将能够运行超过151个C应用程序实例,因为只有少数C应用程序会并行生成查询。我的假设正确吗?

当通过Web服务器Apache、Tomcat、IIS等运行时,它可能运行的线程数量会影响您。Apache有MaxClient

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

通过更改my.cnf并重新启动,可以增加最大连接数。2000年是很高的,但不是不合理的

当你有几十个以上的连接在做一些事情,而不是睡觉时,问题就来了。参见显示进程列表


MySQL连接相当快;共享还有其他问题,因此它不一定弊大于利。连接有状态,包括@variables、tmp表等,当您请求连接时需要重置这些状态,并且连接来自池。

Ok,非常感谢。我还有一个疑问,那就是我有不同的连接字符串,它们之间唯一的变化是连接超时属性。这是每个C应用程序实例3-5个连接线程的原因吗?因为我只有2个C线程在后台运行,它会休眠5秒,然后生成查询。所以我认为这不是需要创建3-5个MySQL连接线程的原因。听起来不错。考虑创建一个单独的对象或一些适当的模式,其中包含MySQL连接,懒惰地创建。在每次sql查询之前,要求对象访问连接。这将让你避免浪费5秒钟。对不起,我没有明白你的意思。你能再详细一点吗?如果你不喜欢OO的东西,那么只需制作一个具有静态值的子程序。sub返回static if set,else连接到db并将句柄存储在static中,然后返回它。然后在每个SQL查询之前调用该子函数。