大幅提升Delphi Datasnap数据传输效率的方法

方法一:增加TCP读写缓存的大小
       DataSnap Server中负责TCP/IP通讯的组件是TDSTCPServerTransport,它默认的TCP/IP读写缓冲区的大小为32KB,由BufferKBSize属性来设置。测试结果显示,这个默认的缓冲区大小,只适合返回很小的数据集的情况,在返回较大的数据集、或者上传文件到数据库/从数据库下载文件等情况下,会造成严重的数据传输效率低下的问题,与正常情况相比可达到了十几倍的差距,把缓冲区的大小调整到512KB甚至更高一点就能解决此问题。这么做每个Server Session都稍微消耗多一点内存,但一般来说每个session其他方面消耗的内存远大于512KB,因此内存消耗所增加的百分比并不多,况且现在连普通电脑都配置了8GB以上的内存了,因此BufferKBSize调整到512KB在各种情况下基本没有什么问题。如果并发数实在太多导致内存不足,可考虑把BufferKBSize调整到256KB甚至128KB。设置方法如下图所示:

 

 

 

 服务器端的修改只解决下行的传输效率,要提高上行的传输效率,客户端的TSQLConnecton的BufferKBSize也需做同样的修改,如下图所示:

 

 

 

方法二:使用压缩数据传输方式
      TDSTCPServerTransport内置了PC1、RSA和ZLibCompression三种过滤器供选择,通过Filters属性来设置。其中ZLibCompression用于压缩数据传输方式。数据库表里面的数据重复的情况比较多,ZLib压缩方式的压缩比一般都能达到4到10倍,这对于带宽在20Mbps以下的远程连接,能大幅提高传输效率,同时减少了对线路带宽的占用。但对于速度在100Mbps或以上的局域网,由于数据压缩速度跟不上网络的速度,这种情况下使用压缩数据传输方式,数据传输效率反而会变差,因此压缩数据传输方式不适用于局域网。DataSnap压缩数据传输方式只需在服务器端设置,客户端不需要做任何的设置。设置方法如下图所示:

 

 

 

                
————————————————
版权声明:本文为CSDN博主「bluestorm」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/BlueStorm/article/details/81282671

转载于:https://www.cnblogs.com/railgunman/p/11456344.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi DataSnap数据池是一种在Delphi环境下使用的数据库连接和数据存储技术。它可以帮助开发者在分布式应用程序中通过网络进行数据交互。 DataSnap 数据池的核心概念是数据模块(Data Module),它提供了与数据库的连接和查询功能。数据模块可以包含多个数据集(DataSet),可以执行查询、插入、更新和删除操作。数据模块还具有数据源(DataSource)和数据集提供者(Provider)的功能,可以将数据源与数据集提供者进行绑定,从而将数据源的数据传输到客户端应用程序。 使用 Delphi DataSnap 数据池,开发者可以通过远程数据集(RemoteDataSet)实现跨网络的数据访问。这种跨网络的数据交互是通过 DataSnap 服务器和客户端进行的。服务器端使用数据连接(Data Connection)建立与数据库的连接,客户端通过 DataSnap 连接器(DataSnap Connector)连接到服务器,并获取或更新数据Delphi DataSnap数据池的优点是可以支持多种数据源(如数据库、文件和Web服务等),可以实现高效的数据交互。同时,它还具有安全性和性能优化的特性。开发者可以通过配置和设置来控制数据传输的安全性和性能。这使得开发分布式应用程序更加灵活和高效。 总之,Delphi DataSnap数据池是一种强大的数据交互技术,能够帮助开发者实现分布式应用程序中的数据存储和访问。它是Delphi环境下开发分布式应用程序的重要工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值