我试图想一个你需要多个数据库连接实例的场景。
通常,DB连接是一个用于所有内容的单个对象。但是你可能想要创建同一个类的另一个实例的原因是什么。 (我在某处读过。)
尝试理解这一点,在写入数据库时,两个数据库连接实例似乎很有可能导致冲突。但阅读时会更快吗? (也许这是一个原因?)
也许DB连接不是一个很好的例子。如果你知道在任何地方创建一个Singleton类的实例是有意义的,你可以给我其他场景。
答案 0 :(得分:0)
数据库连接池可能是单例,但当然,对于某些应用程序,您可能希望同时有多个数据库连接可用。想想一个Web服务器。为什么您不希望能够处理多个用户的并发请求?数据库通常非常擅长确保不会导致任何悲剧性冲突(存在事务隔离)。
答案 1 :(得分:0)
您可能需要更具体地了解本地应用/嵌入式数据库与服务器。
但是,如果您有一个与数据库服务器(SQL Server,Oracle等...)对话的应用程序服务器(IIS,Apache等...),您可能希望一次启用并发和多个连接。你想要并发,因为它是一个处理许多并发请求的服务器,而sql服务器应该能够处理它。序列化服务器上的所有数据库活动将是灾难性的。
关于数据库连接,使用大多数数据库访问技术,它们提供connection pooling。所以你只需打开连接,完成工作然后关闭。它获取并释放连接回池中,因此不必重新创建它们。
Re:“在写入DB时,两个数据库连接实例似乎很有可能导致冲突”
大多数数据库服务器在处理并发时也提供控制。例如,对于sql server,您有locking和isolation levels