sql - DataSnap 服务器 - 根据客户端请求共享数据库连接或新连接?

标签 sql delphi rest ado datasnap

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

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

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

最佳答案

这是一个结构良好的数据访问层非常有用的地方,可以对其进行修改以尝试不同的方法并将数据库连接与代码的其余部分隔离。

如果您在客户端和 DataSnap 服务器之间使用 MIDAS (DataSnap),则强烈建议使用池方法(如 mjn 建议),因为我发现它具有很大的连接开销。

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

关于sql - DataSnap 服务器 - 根据客户端请求共享数据库连接或新连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11665516/

相关文章:

java - 用 Java 模拟 MySQL 服务器

sql - MySql If 语句

delphi - 在运行时更改 dbgrid 选项

sockets - 客户端/服务器套接字重新连接

java - 使用 Spring (Java) 的数据模型和 REST Controller 的 Multi-Tenancy 权限模型

rest - 如何使用 REST API 重建 Nexus 存储库元数据?

sql - 通过分组为 View 生成 id 行

Delphi调试器-发生异常时转到行

ios - 休息套件 RKMappingOperation 不起作用

mysql - 列出文件,计算 OK 和 NOK 的数量并按日期排序