2014-01-28 92 views
0

我嘗試使用CloudTable :: ExecuteBatch(新的TableBatchOperation {operation1,operation2}); 每個操作都是一個Retrieve操作。有問題的片段看起來是這樣的:Azure表存儲批行密鑰查找

var partitionKey = "1"; 

var operation1 = TableOperation.Retrieve(partitionKey, "1"); 
var operation2 = TableOperation.Retrieve(partitionKey, "2"); 

var executedResult = ExecuteBatch(new TableBatchOperation{operation1, operation2}); 

我得到一個異常說,在批處理執行過程中不能有任何檢索操作。有沒有辦法解決這個問題,或者異步執行是處理多個分區鍵,行鍵查找的最佳方式?對於我的用例,我將不得不通過分區鍵和行鍵同時查找最多3個不同的行。

回答

1

是的,批量操作有一定的限制,不包括GETS。 如果分區鍵保持不變,您可以嘗試如此處所述的範圍查詢。

Windows Azure table access latency Partition keys and row keys selection

否則,您可以並行查詢。

+0

哎呦,我犯了這個問題的一個騙局。我無法真正對一系列行鍵進行查詢,因爲我最終可能想要分區中的第一個和最後一個鍵。我認爲並行查詢可能最終成爲最佳途徑。這與對azure的異步調用相同嗎?如果不是,你能告訴我還是指點我有一個不同的來源?您可以在以後的訪問者的答案中提供此鏈接(或更好的鏈接):http://social.msdn.microsoft.com/Forums/windowsazure/en-us/d573a17b-2221-4c10-80bc-83b12e863c7d/parallel- query-to-azure-table-storage?forum = windowsazuredata – Teeknow

+0

是的,並行調用是異步的,但需要同時並行調用。 應該有很多並行查詢的例子。您也可以考慮使用TPL,因爲它是直接抽象使用線程的一種好方法。 http://msdn.microsoft.com/en-us/library/dd537609.aspx。 如果您只需要運行3個查詢返回單行,並行化可能無法提供最佳性能,順序處理可能就足夠了。並行調用更有意義,如果你有很多和/或他們執行復雜的查詢,返回大量的行。 – hocho