【问题标题】:Keeping database connection open - good practice?保持数据库连接打开 - 好的做法?
【发布时间】:2012-07-05 14:17:47
【问题描述】:

我正在编写一些 Python 代码来监视某个目录中的新文件,并使用 cx_Oracle 模块将新文件插入到数据库中。该程序将作为服务运行。在给定时间,可能有许多文件同时到达,但也可能有长达一小时的时间没有收到文件。关于良好做法:无限期地保持数据库连接打开是不是很糟糕?一方面,有些事情告诉我这不是一个好主意,但另一方面,为每个接收到的文件创建一个新的数据库对象并在之后关闭它会产生很多开销,尤其是在一次接收到许多文件时。任何有关如何解决此问题的建议将不胜感激。

【问题讨论】:

  • 不断打开它是不“礼貌”的。插入是否时间紧迫?如果没有,您可以将它们缓存一分钟左右,然后每分钟执行一组数据库操作。否则,您可以将对象缓存一段时间并在不活动后将其关闭。

标签: python oracle


【解决方案1】:

如果您只需要一两个连接,我认为让它们无限期打开并没有什么坏处。

对于 Oracle,创建新连接是一项昂贵的操作,这与其他一些数据库不同,例如 MySQL,创建新连接的成本非常低。有时甚至可能需要几秒钟的时间才能连接,如果某些应用程序过于频繁地关闭和打开连接,这可能会成为一些瓶颈。

Oracle 上的空闲连接使用少量内存,但除此之外,它在空闲时不会消耗任何其他资源。

为了让您的 DBA 满意,您需要确保没有大量空闲连接处于打开状态,但我会很高兴有一两个。

【讨论】:

    猜你喜欢
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多