保持数据库连接打开是否昂贵?

Tim*_*oad 9 database session

我正在与一些软件开发人员会面,并建议在我的应用程序代码中尽快关闭数据库连接?有人可以告诉我在应用程序中保持连接打开的危害是什么.

我正在从数据库的单个表中读取数据

gir*_*uid 8

把它想象成公共汽车上的座位.

当您打开连接时,您将填满这些座位 - 最终,公交车已满,无法再接受乘客(或打开更多数据库连接).任何时候公共汽车必须拒绝乘客,因为它的容量,乘客必须等待另一辆公共汽车来.

通过在完成连接后关闭连接,可以腾出空间来获得更多连接 - 这意味着需要与数据库交互的更多程序可以完成所需的操作,而无需等待连接释放.不关闭连接意味着数据库需要弄清楚如何处理所有连接,如果您的数据库没有像打开新连接那样快速关闭连接,这可能会导致问题.

当您使用连接池时,这会发生变化(请参阅下面的评论); 在这些情况下,您会希望您的池为您处理打开和关闭连接.如果你没有汇集你的连接,那么让它们保持打开的时间比你需要的时间长,浪费了资源.

  • 这不是全部真相.当使用连接池时,最好始终保持连接打开,因为对于大多数DBMS*打开*连接是相当有用的. (5认同)