2011-08-05 53 views
2

這是我們的情況:在使用.Take()時Azure表存儲中的奇怪數據訪問時間

我們將用戶消息存儲在表Storage中。分區鍵是UserId,RowKey用作消息ID。

當用戶打開他的消息面板時,我們只需要。(x)個消息,我們不關心sortOrder。但是我們注意到,獲取消息所花費的時間因我們所收到的消息數量而異。

我們做了一些小測試: 我們做了50 *。取(X),並比較了不同之處: 所以我們做了。取(1)50倍和。取(100),50倍等

爲了進行額外的檢查,我們進行了5次相同的測試。

下面是結果:

Query Results

正如你可以看到有一些巨大差異。 1和2之間的差異很奇怪。 199-200也是一樣。

有沒有人有任何線索如何發生?表存儲位於服務器上,不是開發存儲。

非常感謝。

X:#注意到 Y:測試號

更新 的問題似乎只能當我使用無線網絡來。但我使用的時間是正常的電纜。

+0

你有沒有通過Fiddler或類似的東西看過交通情況?有沒有機會與我分享您的測試代碼和存儲憑據? ([email protected]) – smarx

+0

我會將問題從我的業務應用程序中分離出來,並將其發送給新項目。 –

回答

1

可能數據是以一定數量x的批次收集的。當你請求x + 1行時,它將不得不採取兩個批次,然後放下一定數量。

嘗試以Take()參數的增量1運行測試,以確認或消除此假設。

+0

如果你看.Take(1)和.Take(2),99-100-101,它使用批次的機會相當小。但感謝提示+1 –