首页 > 解决方案 > 为什么我们总是要关闭与数据库的连接?

问题描述

我在一次采访中被问到这个问题。为什么关闭数据库连接很重要?这只是一种好的做法,因为它可能会浪费资源还是有更多的东西?

标签: sqljdbc

解决方案


您已经提到了第一个原因:资源泄漏。这意味着系统上内存、套接字和文件描述符的使用会不断增加,直到您的程序或数据库崩溃、被杀死或使操作系统瘫痪。甚至在此之前,您的系统可能会变得无响应、缓慢并且容易出现各种超时、网络断开等。

如果您的代码依赖于隐式提交(无论如何这都是个坏主意),您将丢失应用程序写入数据库的数据。

不关闭连接也可能会在数据库中留下锁和事务,这意味着其他连接在等待僵尸连接持有的锁时会卡住。例如,如果您有一个外部报告系统,它可能会停止工作。数据库备份也可能停止工作,使您容易丢失数据。

根据具体情况,未完成的事务也可能填满数据库事务日志和/或临时空间,从而可能使数据库处于需要手动干预的脱机状态。

如果您正在使用连接池,则不关闭连接可能会阻止连接返回到池中。这意味着连接池最终会耗尽,从而阻止您的程序打开新连接。


推荐阅读