您可能需要两个或更多实例进行相同数据库连接的原因?

时间:2013-07-24 03:53:04

标签: database singleton

我试图想一个你需要多个数据库连接实例的场景。

通常,DB连接是一个用于所有内容的单个对象。但是你可能想要创建同一个类的另一个实例的原因是什么。 (我在某处读过。)

尝试理解这一点,在写入数据库时​​,两个数据库连接实例似乎很有可能导致冲突。但阅读时会更快吗? (也许这是一个原因?)

也许DB连接不是一个很好的例子。如果你知道在任何地方创建一个Singleton类的实例是有意义的,你可以给我其他场景。

2 个答案:

答案 0 :(得分:0)

数据库连接可能是单例,但当然,对于某些应用程序,您可能希望同时有多个数据库连接可用。想想一个Web服务器。为什么您不希望能够处理多个用户的并发请求?数据库通常非常擅长确保不会导致任何悲剧性冲突(存在事务隔离)。

答案 1 :(得分:0)

您可能需要更具体地了解本地应用/嵌入式数据库与服务器。

但是,如果您有一个与数据库服务器(SQL Server,Oracle等...)对话的应用程序服务器(IIS,Apache等...),您可能希望一次启用并发和多个连接。你想要并发,因为它是一个处理许多并发请求的服务器,而sql服务器应该能够处理它。序列化服务器上​​的所有数据库活动将是灾难性的。

关于数据库连接,使用大多数数据库访问技术,它们提供connection pooling。所以你只需打开连接,完成工作然后关闭。它获取并释放连接回池中,因此不必重新创建它们。

Re:“在写入DB时,两个数据库连接实例似乎很有可能导致冲突”

大多数数据库服务器在处理并发时也提供控制。例如,对于sql server,您有lockingisolation levels