MySql连接,我可以把它打开吗?

Pie*_*888 13 c# mysql connection

在整个会话期间保持连接打开是否明智?我创建了一个连接到MySql数据库的C#应用​​程序,该程序读取和写入它,并且应用程序必须每天运行大约10个小时不间断.

在您从数据库中提取某些内容并在需要新内容时再次打开它时,是否存在保持连接打开而不是调用close()函数的风险?

bob*_*nce 11

保持连接打开一段时间是可以的,只要:

  1. 你没有那么多并发空闲连接,你达到MySQL连接限制;

  2. 没有做任何事情,你不要把它打开几个小时.默认的MySQL连接wait_timeout是8小时; 保持连接长时间不活动,当你下次使用它时,你会得到一个"MySQL服务器已经消失"的错误.

  • 通过保持连接打开(假设提供程序使用连接池),没有什么可以获得的.官方MySQL Connector/Net提供程序默认使用连接池.OP没有提到他们实际使用的是哪个提供商,但是如果它确实支持池化,那么我将使用开放的延迟/关闭早期策略并让提供商管理底层物理连接. (2认同)

Tam*_*ege 9

由于您使用的是ADO.NET,因此可以使用ADO.NET的内置连接池功能.实际上,让我改进一下:您必须始终使用ADO.NET的内置连接池功能.通过这样做,您将使.NET运行时在后台透明地管理您的连接.它会保持连接打开一段时间,即使您关闭它们并在打开新连接时重复使用它们.这真的很快.

确保在连接字符串中提到您想要池化连接,因为它可能不是默认行为.

您只需要在需要时在本地创建连接,因为它们在backrgound中汇集,因此创建新连接没有任何开销:

using (var connection = SomeMethodThatCreatesAConnectionObject())
{
    // do your stuff here
    connection.Close(); // this is not necessary as
                        // Dispose() closes it anyway
                        // but still nice to do.
}
Run Code Online (Sandbox Code Playgroud)

这就是你应该如何在.NET中做到这一点.