Dot-Net
Azure 表儲存性能 - REST 與 StorageClient
我正在使用 Azure 表儲存,並試圖找出提高性能的最佳方法。我執行的查詢非常簡單——要麼是使用分區鍵和行鍵的精確選擇,要麼是帶有列表的 where 子句(例如,WHERE x==1 或 x==2 或 x==3 等)。一旦我取回數據,我就不會在數據上下文中跟踪它(不需要更改跟踪等)。保存數據也是如此,所以我只將它添加到上下文中以啟用保存。
目前,我正在使用 .NET 庫(儲存客戶端)。由於我不使用 TableServiceContext 的更改跟踪和其他功能,我正在考慮直接使用 HTTP API。有沒有人嘗試過這兩種選擇?如果是這樣,您看到了什麼樣的性能差異?
謝謝,埃里克
為了優化性能,表儲存可能有點變幻莫測。有多種因素會對其產生影響。這裡只是我腦海中的一些:
- 在每個查詢中使用分區鍵是必須的。如果你不這樣做,你就做錯了。如果你使用單 PK 和單 RK(並且只有這兩個),它不再是一個查詢,而是一個資源 GET,並且應該是相對即時的。
- 不要使用基於 OR 的查詢。這將導致全表掃描,您的性能將很糟糕。相反,在 OR 語句中並行化這些查詢。
- 分區策略將產生重大影響。您擁有多少個分區以及訪問它們的頻率(以使它們預熱並導致底層分區伺服器負載平衡)將導致巨大的差異。分區的大小在這裡也有很大的影響。順序分區鍵通常是一個壞主意。
- 小請求可以從關閉 nagling 中受益(如前所述)。
- 關閉上下文跟踪並 100 繼續(請參閱此處)也可以提供幫助。
我想還有更多取決於您的應用程序。但是,我提到的通常是我開始的那些。