24/7应用Dot NET应用开放式连接器

问题描述 投票:1回答:1

我正在开发一个将以24/7的速度运行的应用程序。应用程序的生命周期非常简单。每当有新请求出现时,它只会更新数据库中的记录。aplicaiton更新记录在不同的服务器和不同的数据库中。一个小时内有数百万的请求应用程序对于每个请求,它都按照以下代码打开和关闭连接。

internal int ExecuteNonQuery(string Query)
    {
        using (SqlConnection SqlConn = new SqlConnection(this.ConnectionString))
        {
            using (SqlCommand sqlComm = new SqlCommand(Query, SqlConn))
            {
                SqlConn.Open();
                sqlComm.CommandTimeout = 60;
                sqlComm.ExecuteNonQuery();
                return 0;
            }
        }
    }

我想优化我的代码我不希望每次请求都将为此创建一个新的连接,我已经在ado.net中阅读了连接池机制。请记住,我有不同的sql连接(最大10)。我可以使用连接池吗?还是可以使自己的逻辑为每个连接创建sqlconection并整天打开它们。而且我的应用程序经常会产生握手异常。

c# optimization ado.net sqlconnection
1个回答
0
投票

[here中有很多启用连接池的方法

例如,如果您将MsSQlOleDb驱动程序配合使用,则连接池即开即用。

根据您的情况,您可以修改池中的“最大数目”连接。要确定此号码,请在此处检查以下答案:Should I set max pool size in database connection string? What happens if I don't?

重要的是,连接不会被破坏,它们只是返回到池中。这使它非常有效,并且是推荐的操作方法。

OleDb

用于OLE DB的.NET Framework数据提供程序自动使用OLE DB会话缓冲池来缓冲连接。连接字符串参数可用于启用或禁用OLE DB服务(包括池)。

ODBC

ODBC的.NET Framework数据提供程序的连接池由用于连接的ODBC驱动程序管理器管理,不受ODBC的.NET Framework数据提供程序的影响。

OracleClientOracle的.NET Framework数据提供程序自动为ADO.NET客户端应用程序提供连接池。您还可以提供多个连接字符串修饰符来控制连接池的行为(请参阅本主题后面的“使用连接字符串关键字控制连接池”)。

© www.soinside.com 2019 - 2024. All rights reserved.