Database 改进对数据的多次同步访问
首先,我要为过度使用粗体文本表示歉意。我想简化对我冗长问题的理解 我对数据的多重访问有问题 我必须解决以下问题: 我有一个服务器应用程序服务器a(基于TIdServer),具有许多(大约100个)TCP连接。 每个连接的目标是:Database 改进对数据的多次同步访问,database,delphi,synchronization,indy,anydac,Database,Delphi,Synchronization,Indy,Anydac,首先,我要为过度使用粗体文本表示歉意。我想简化对我冗长问题的理解 我对数据的多重访问有问题 我必须解决以下问题: 我有一个服务器应用程序服务器a(基于TIdServer),具有许多(大约100个)TCP连接。 每个连接的目标是: 从客户端获取状态消息(每2-5秒一次)。状态包含3个 双数字存储为文本 获取状态后,从服务器A向客户端发送应答 这些状态(大约100个)必须保存在Firebird数据库表-表中(我用AnyDAC来做这个)。每个客户端在表中都有其编号和记录 另外三个本地网络客户端应用
- 从客户端获取状态消息(每2-5秒一次)。状态包含3个 双数字存储为文本
- 获取状态后,从服务器A向客户端发送应答
如果没有源代码,就很难找出问题所在。根据您显示的数字,我怀疑您必须找到应用程序的真正瓶颈。我想你实际上离火鸟的极限还很远,但正是你使用它的方式使它受到了限制。添加一些聪明的缓存,并使用清晰的CQRS模式可能会有很大帮助。客户端:创建一个函数/过程,当用户执行操作时,该函数/过程将告诉服务器/表“im online”或“im offline”或类似的消息。而不是每2-5秒发送一次状态消息 服务器端:创建一个函数/过程,当来自任何客户机的新消息到达时,该函数/过程将只告诉客户机最新的更改(不充满表) 也可以在firebird中为此创建过程。这将降低您的网络和服务器流量/负载 编辑: 另一个想法是;您可以创建附加表来标识/列出标准数据。怎么样 假设您正在向客户端或从客户端发送或接收“热”、“冷”、“冷”数据。长文本意味着更多的网络和数据库负载。您可以创建一个表,该表列为所有内容的标准。让我们举个例子 表名HotColdCool
ID Description
1 HOT
2 COLD
3 COOL
使用此表,您将只发送和接收ID(任何类型的int),而不是全文。这将降低许多客户端的网络和数据库负载
如果你对你的项目解释得更多,我可以给你更多的想法。如果不看你的代码,这可能很难回答。你做过性能分析吗?你怎么知道需要改变什么?如果你还没有分析过,那么优化就是一个废话——大多数情况下,它最终会变成一些你认为不需要修复的东西。很多次我都看到算法在实现出错时受到指责……我没有做性能评测。我是业余爱好者,我不能做这个过程:(我写这个应用程序是为了帮助我的主要专业工作。我只是一个信息技术爱好者,我正在尝试自己去做。经过一年的出色工作,我不得不重新构建它。除了瓶颈之外,我还纠正了我代码中的一些其他部分。因此,我决定重新编写它-更好,我问如何做到这一点。)正确。谢谢你的回答。在你决定到底出了什么问题之前,为什么不先分析一下你的应用程序,找出真正的瓶颈在哪里。你为什么乐于猜测呢?你分析过了吗