Database
數據包大小會影響響應延遲嗎?
我正在針對位於北弗吉尼亞州的亞馬遜微型數據庫在本地測試我的 Web 應用程序。我住在荷蘭格羅寧根。當我通過公共網際網路發送選擇查詢時,它需要
2616(ms)
返回 42 KB 的結果集。[INFO ] 2022-01-17 10:22:02.147 [http-nio-8080-exec-1] http_access_log - method=GET uri="/api/journal/get/virtual-scroll" status-code=206 bytes=42350 duration=2616(ms) client: remote ip=0:0:0:0:0:0:0:1 useragent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36"
當我做一個簡單的
SELECT 1 FROM TABLE
查詢時,它需要 550 毫秒才能得到響應。那麼這是否意味著響應大小增加時響應的延遲會增加?還是結果集返回查詢執行緩慢?它是一個儲存過程呼叫。
當我通過公共網際網路發送選擇查詢時,需要 2616(ms) 才能返回 42 KB 的結果集。
請記住,請求需要到達伺服器,在那裡進行處理,並且回复需要返回給客戶端。每次傳輸都包括序列化和到目的地的傳播,因此時間確實取決於數據大小。
但是,在您的情況下,最大的影響很可能來自伺服器上的處理。複雜查詢可能需要相當長的時間,具體取決於它們的複雜性(不一定與輸出大小相關)和伺服器性能。
為了完整性:
- 序列化延遲 = 數據大小 / 頻寬 (42 KB / 100 Mbit/s ≈ 3.5 ms)
- 傳播延遲:每 1000 公里至少 5 毫秒,具體取決於連接性和媒體(格羅寧根-弗吉尼亞州 > 每次行程 30 毫秒)
因此,您可以粗略估計往返時間不到 100 毫秒,而其餘的延遲是由於伺服器處理造成的。這就是為什麼針對您的工作負載優化您的伺服器和數據庫至關重要的原因。此外,您需要考慮傳輸延遲,因此應用程序應盡可能優化和捆綁查詢。