sql - 为什么我们总是要关闭与数据库的连接?
问题描述
我在一次采访中被问到这个问题。为什么关闭数据库连接很重要?这只是一种好的做法,因为它可能会浪费资源还是有更多的东西?
解决方案
您已经提到了第一个原因:资源泄漏。这意味着系统上内存、套接字和文件描述符的使用会不断增加,直到您的程序或数据库崩溃、被杀死或使操作系统瘫痪。甚至在此之前,您的系统可能会变得无响应、缓慢并且容易出现各种超时、网络断开等。
如果您的代码依赖于隐式提交(无论如何这都是个坏主意),您将丢失应用程序写入数据库的数据。
不关闭连接也可能会在数据库中留下锁和事务,这意味着其他连接在等待僵尸连接持有的锁时会卡住。例如,如果您有一个外部报告系统,它可能会停止工作。数据库备份也可能停止工作,使您容易丢失数据。
根据具体情况,未完成的事务也可能填满数据库事务日志和/或临时空间,从而可能使数据库处于需要手动干预的脱机状态。
如果您正在使用连接池,则不关闭连接可能会阻止连接返回到池中。这意味着连接池最终会耗尽,从而阻止您的程序打开新连接。
推荐阅读
- python - 问题:使用自定义视觉和 python API 下载模型
- javascript - 将对象转换为数组返回未定义
- django - 未找到“user_login”的反向。'user_login' 不是有效的视图函数或模式名称
- python - python3'类型函数不可迭代'tkinter
- git - 如何在三重存储之上设置版本控制
- azure - Jenkins:VM Azure 代理:节点下班后脱机,无法自动重新开始新工作
- angular - FormGroup 中的 nzMode="tags" 将项目添加到 FormArray
- sql-server - 如果条件中的返回语句在 SQL 函数中不起作用
- kubernetes - Helm 模板在绑定到 configmap 时不起作用
- typescript - Firestore:将自动生成的 id 分配给新创建的文档