zoukankan      html  css  js  c++  java
  • 大幅提升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

  • 相关阅读:
    每日日报2020.12.1
    每日日报2020.11.30
    981. Time Based Key-Value Store
    1146. Snapshot Array
    565. Array Nesting
    79. Word Search
    43. Multiply Strings
    Largest value of the expression
    1014. Best Sightseeing Pair
    562. Longest Line of Consecutive One in Matrix
  • 原文地址:https://www.cnblogs.com/railgunman/p/11456344.html
Copyright © 2011-2022 走看看