2

我的同事辩称,为应用程序打开单个数据库连接比使用池打开和关闭它要好得多、更快。

他有一个 ApplicationStart 方法,他在该方法中初始化Application('db')并在整个应用程序中保持此连接。这个应用程序主要包含只读数据。

我该如何说服他?

4

1 回答 1

6

这在很大程度上取决于这里的“应用程序”是什么。如果这是一个在单个线程上工作并按顺序执行操作的客户端应用程序,那么坦率地说,这两种方式都不会有任何明显的区别。在那种情况下,如果您使用池,它将基本上是一个包含 1 个项目的池,并且从池中打开连接几乎是即时的(与网络 IO 相比当然不明显)。在那种情况下,我仍然会说使用内置池,因为它会在您更改场景时避免假设。

但是,如果您的应用程序使用多个线程,或者通过任何其他机制一次执行多个操作(async)等,则使用单个连接将非常糟糕;要么完全失败,要么您需要围绕连接进行同步,这将严重限制您。请注意,任何服务器端应用程序(任何类型的 Web 应用程序、WCF 服务、SOAP 服务或套接字服务)都会对他的想法做出非常糟糕的反应。

也许说服他的主要方法很简单:让他证明这一点。要求进行可重复的测试/演示以显示这种差异。

于 2013-05-28T11:37:46.780 回答