5

我有一个 Delphi XE2 DataSnap 服务器(Windows 服务)连接到服务 REST 客户端请求的后端 MS SQL Server 2008(相同的服务器框)。
一段时间以来一切都很好,直到最近,我遇到了一个问题,DataSnap 服务由于某种原因失去了与 SQL Server 的连接。

该服务无法重新建立连接,我必须重新启动 DataSnap 服务才能继续。
这让我开始思考,因为目前该服务仅使用 1 个 SQL 连接 (TADOConnection) 来共享所有客户端请求。我这样做是因为我不希望为每个客户端请求实例化一个新的 SQL 连接的开销。

我正在考虑是否为每个请求建立一个单独的 SQL 连接实际上是否会更好,并且开销是否会很明显 - 任何人都可以对此发表评论/建议吗?

4

1 回答 1

3

这就是拥有一个可以修改以尝试不同方法并将您的数据库连接与其余代码隔离开来的结构良好的数据访问层非常有用的地方。

如果您使用从客户端到 DataSnap 服务器的 MIDAS (DataSnap),强烈建议使用池化方法(如 mjn 建议的那样),因为我发现它有很大的连接开销。

我已经构建了一些在运行时使用普通 TADOConnection 的网络服务(相当低的流量),并且发现建立数据库连接的开销可以忽略不计,当然与从设备到服务器的整体网络延迟相比,背部。
如果您发现 TADOConnection 在高流量环境中仍然产生过多开销,您可以轻松地将您自己的连接池添加到这样的系统中。

于 2012-11-30T16:44:05.110 回答