Sql-Server-2008

從 SQL Server 檢索的數據是否經過壓縮傳輸?

  • October 24, 2017

從 Microsoft SQL Server 檢索的數據是否經過壓縮?如果這是由連接字元串控制的,是否有任何簡單的方法來判斷是否有任何特定應用程序正在使用它?

我正在研究分析工具,通過我們的網路傳輸大量數據可能需要幾分鐘。我想知道如果我們從同一遠端伺服器上的壓縮數據儲存中提取數據,是否應該期望性能提高。

只要我們談到這個話題,我就很好奇:數據是以二進制還是 ASCII 傳輸的?例如,如果12345從列中查詢該值,是否以INT0x31、0x32、0x33、0x34、0x35 五個字節傳輸;該值所需的兩個字節;還是列所需的四個字節?

需要明確的是,我知道有一些關於壓縮儲存數據和備份數據的選項。我在問數據是如何傳輸的。

您要壓縮的數據是通過TDS通過線路發送的。這裡有一些較小的壓縮,但與使用頁/行壓縮、備份壓縮或列儲存壓縮獲得的壓縮類型相去甚遠。

之前有人問過:

http://connect.microsoft.com/SQLServer/feedback/details/412131/enable-network-compression-compress-tds-stream

http://connect.microsoft.com/SQLServer/feedback/details/377479/wan-compression-option

這些項目仍然開放,所以也許有一些希望。沒有辦法通過我見過的連接字元串來控制它。

與此同時,有些產品聲稱可以做到這一點,例如

http://www.nitrosphere.com/products/nitroaccelerator/

http://toonel.net/tcpany.htm

您還可以潛在地配置 SQL Server 和應用程序伺服器之間的網路以支持壓縮(和其他東西,如加密),但您超出了我的範圍,我不確定 SQL 的每個功能是否都支持這一點伺服器。

老實說,我不相信這是您要專注於優化的地方。壓縮此流實際上可能會減慢速度,並超過發送更少字節的好處。我寧願把錢花在伺服器和客戶端之間更好的網路連接上,也不願花時間投資於這類工作並測試它是否有任何實際好處——直到後來才能夠做到這一點。從 10/100 到千兆光纖對網路 I/O 具有已知可預測的影響。


我不確定通過網路發送的字節格式;您將不得不為此設置某種數據包嗅探器(或者也許有人已經這樣做了並且會插話)。

至於壓縮的影響,除非您使用的是 Fusion-IO 或其他高端 SSD 類型的解決方案,否則您目前幾乎可以肯定是 I/O 限制,而不是 CPU 限制。因此,只要您有 CPU 成本,您應該會在啟用壓縮的情況下看到更快的性能(但這不會改變網路性能,因為數據在傳輸之前是未壓縮的)。我說,對您的伺服器、您的應用程序、您的數據或您的使用模式一無所知 - 您很可能會遇到壓縮實際上會損害性能的邊緣情況,或者數據不是獲得良好壓縮比的良好候選者。

引用自:https://dba.stackexchange.com/questions/35292