database - 为什么要使用单例来管理数据库连接?

标签 database

我知道这个问题之前到处都有人问过,但我无法得到明确的解释,所以我要再次提出来。那么使用单例来控制 Web 应用程序中的数据库连接有什么大惊小怪的呢?有人喜欢有人讨厌我不明白。据我所读,“这是为了确保始终只有一个事件连接到您的数据库”。我的意思是为什么这是一件好事?每秒处理多个请求的数据驱动 Web 应用程序上的 1 个事件数据库连接会带来麻烦,不是吗?无论出于何种原因,没有人能够正确解释这一点。我一直在网上。我知道我很厚。

最佳答案

这里假设使用 Java,但也与大多数其他技术相关。

我不确定您是否混淆了普通单例与 service locator 的使用.它们都是设计模式。应用程序使用服务定位器模式来确保有一个类负责获取和提供对数据库、文件、JMS 队列等的访问。

大多数服务定位器都是作为单例实现的,因为不需要多个服务定位器来完成相同的工作。此外,缓存从第一次查找中获得的信息很有用,这些信息以后可以被服务定位器的其他客户端使用。

顺便提一下关于

的争论

"it's to ensure that there is always only one active connection to your DB"

是虚假和误导性的。如果长时间处于非事件状态,很可能会关闭/回收连接。因此,缓存与数据库的连接是不受欢迎的。这个论点有一个偏差;只要您使用相同的上下文,即在相同的 HTTP 请求或用户请求(以适用者为准)内,就鼓励“重新使用”从连接池获得的连接。从性能的角度来看,这样做很明显,因为建立新连接可能是一项昂贵的操作。

关于database - 为什么要使用单例来管理数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/703767/

相关文章:

database - 您能否以关系数据库可以理解的方式表示应用程序对象?

javascript - 了解数据库表是否已更新的最有效方法

javascript - Sequelize TypeError : Cannot convert undefined or null to object

PHP MYSQL 表比较

c# - 处理大量数据的任何好方法?

database - 来自 pgadmin4 的 PostgreSQL pg_restore 错误显示角色不存在

mysql - 在 SQL 中连接多个表并执行算术

mysql 到 mongodb 数据迁移计划高级

php - 将 PDO 对象发送到类

mysql - 使用嵌套查询提高 MySQL 中的 SELECT 性能