2012-05-25 19 views
2

有沒有辦法強制Windows Azure表存儲分區到不同的物理硬件? Windows Azure MSDN blog表示環境會自動負載均衡服務器之間的分區,但我無法執行壓力測試,因爲我可以量化地看到兩個分區位於不同的實際計算機上。什麼時候Windows Azure表存儲分區來自不同的機器?

考慮在查詢以下濾波器:

(PartitionKey == 「一個」 & & RowKey == 「1」)|| (PartitionKey ==「B」 & & RowKey ==「2」)

如果兩個分區屬於不同的物理機器上,查詢可被以並行的方式同時地處理兩個分區服務器執行,所以它的計算結果速度更快。但是,我似乎無法找到實際衡量這種性能增益的方法。

什麼是分區更重要?表中的數據量或分區的500查詢/秒限制提及here

回答

2

你提到的查詢是一個糟糕的一個。 Windows Azure存儲不會像這樣優化OR查詢,因此它將導致全表掃描。你一定要自己並行地觸發兩個查詢,並將結果聯合起來(在這種情況下,只是返回的兩個實體)。

要真正回答你的問題,我知道無法強制表存儲來重新平衡分區。

+0

我在哪裏可以找到有關Windows Azure表存儲查詢優化的更多信息?我只找到[this](http://www.slideshare.net/sundararajan009/windows-azure-table-storage-deep-dive),其中提到了你所說的。 – Tamas

0

您可以使用Parallel Threaded Reading獲得卓越的性能(在限制500查詢/秒/分區和5000 /交易/秒/存儲帳戶下),並在您的壓力測試中添加更多線程。

下面的鏈接有一個實驗,其中「我能夠使用365個線程讀取365,000行,並且我平均獲得了大約7秒的數據,對於使用30個線程遍佈30個分區的30,000行,平均1.4秒。巨大的勝利!「,值得檢查!

Azure Table Storage Performance from Massively Parallel Threaded Reading

+0

謝謝,我還沒有找到。不過,我也是這樣做的,我使用TPL對具有多個分區的表執行並行查詢。很顯然,執行時間總是更快,但這並不意味着分區位於單獨的物理服務器上。我相信如果數據已經分離到多臺機器上,單個查詢應該會變得更快,因爲在這種情況下,每臺機器將需要更少的時間來執行查詢。 – Tamas

+0

正如我所看到的,這意味着需要增加查詢率以強制負載平衡器將分區移動到不同的機器。但是,當我達到500個查詢/秒/分區限制時,這似乎不會發生。 – Tamas

+0

您是在衡量性能「每個分區上的每個查詢」還是「包含所有線程的批量讀取」? – AvkashChauhan

相關問題