2012-07-05 67 views
1

我正在写一些Python代码,用于监视新文件的某个目录,并使用cx_Oracle模块将新文件插入到数据库中。此程序将作为服务运行。在给定的时间,可能会有多个文件一次到达,但也可能会有一小时的时间段没有收到文件。关于良好实践:保持数据库连接无限期打开是不好的?一方面,有些东西告诉我这不是一个好主意,但另一方面,为每个收到的文件创建一个新的数据库对象并在之后关闭它,特别是一次接收多个文件时,会有很多开销。任何建议如何处理这将不胜感激。保持数据库连接打开 - 良好实践?

+1

经常打开它并不“礼貌”。插入是否有时间限制?如果没有,您可以将它们缓存一分钟左右,并且每分钟执行一组数据库操作。否则,您可以缓存该对象一段时间,并在闲置后关闭它。 – Wug 2012-07-05 14:20:39

回答

1

如果您只需要一个或两个连接,我认为保持打开无限期无损。

使用Oracle,创建新连接是一项昂贵的操作,与其他一些数据库(如MySQL)相比,创建新连接非常便宜。有时甚至可能需要几秒钟才能完成连接,如果它们频繁关闭和打开连接,它们可能会成为某些应用程序的瓶颈。

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

为了让您的DBA高兴,您需要确保您没有大量空闲连接,但我会对一两个人感到满意。