【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压缩数据传输方式只需在服务器端设置,客户端不需要做任何的设置。设置方法如下图所示:

                

 

  • 0
    点赞
  • 0
    评论
  • 6
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

BlueStorm

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值