Pie*_*888 13 c# mysql connection
在整个会话期间保持连接打开是否明智?我创建了一个连接到MySql数据库的C#应用程序,该程序读取和写入它,并且应用程序必须每天运行大约10个小时不间断.
在您从数据库中提取某些内容并在需要新内容时再次打开它时,是否存在保持连接打开而不是调用close()函数的风险?
bob*_*nce 11
保持连接打开一段时间是可以的,只要:
你没有那么多并发空闲连接,你达到MySQL连接限制;
没有做任何事情,你不要把它打开几个小时.默认的MySQL连接wait_timeout是8小时; 保持连接长时间不活动,当你下次使用它时,你会得到一个"MySQL服务器已经消失"的错误.
由于您使用的是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中做到这一点.