大幅提高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網絡

相關文章
相關標籤/搜索