大幅提高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内置了PC一、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网络

相关文章
相关标签/搜索