【问题标题】:manage oracle sql connection in web api在 web api 中管理 oracle sql 连接
【发布时间】:2014-12-28 01:12:39
【问题描述】:

我正在创建一个连接到 Oracle 数据库的 Microsoft Web API 后端。管理数据库连接的最佳方法是:打开一次数据库连接并通过静态类/方法访问它,还是每次需要查询数据库时打开一个数据库连接并再次关闭它?

现在我正在使用静态连接:

public static class DbConnConfig {

    public static string ConnString = "Provider=OraOLEDB.Oracle; ... otherstuff ...";
    public static OleDbConnection conn = null;

    public static OleDbConnection getConnection() {
        if(DbConnConfi.conn==null) {
            conn = new OleDbConnection(ConnString);
            conn.Open();
        }
        return conn;
    }
}

...然后在任何需要连接的类中我调用DbConnConfig.getConnection()

【问题讨论】:

标签: c# asp.net oracle asp.net-web-api oracle11g


【解决方案1】:

它可以根据您的具体要求而有所不同。这里有几点需要思考。

如果您的应用程序不断运行并池化数据库,我会在其整个生命周期内保持连接打开。不需要创建和释放数据库连接,因为您可以重复使用相同的连接。这将为您节省用于启动和释放数据库连接的资源,并且通常是安全的:is it safe to keep database connections open for long time。此外,您可能需要支付更多费用,因为某些许可证会在其定价模型中考虑到与数据库的连接数。

您应该考虑的另一个方面是不要耗尽活动连接的数量。也就是说,在规划/设计/架构您的应用程序时要考虑到可扩展性。您可以查看活动连接数here。我记得我有一个问题。在完成工作单元后,我最终关闭了连接(另一种选择是增加连接池的大小)。虽然,如果您刚刚开始开发并且您的应用程序是唯一的消费者,那将不是问题 LOL

另一种最好关闭数据库连接的情况是,当您知道它不会在很长一段时间内被使用时。这样,您将打开更少的连接(再次考虑可伸缩性)。您还将重新获得该连接占用的资源(如内存,如果您对此有任何顾虑)。

您可能也会觉得这很有趣:Entity Framework and Connection Pooling

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 2012-06-23
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2019-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多