2013-08-20 33 views
0

假設我有一個Azure存儲表50K行,像這樣查詢Azure存儲表總是1次交易?

{ 
    PartitionKey, 
    RowKey, 
    Name, 
    Price 
} 

和查詢實體會是這樣的

var query = from entity in dataServiceContext.CreateQuery<MyEntity>(tableName) 
       where entity.Price == 10 
       select new { entity.Name}; 

當我需要搜索,其價格的所有實體== 10只會對交易結果的數量計算交易嗎?或者將每個實體的檢查(entity.Price == 10)計爲單獨的讀取事務,結果是50K事務嗎?

+3

有一點要記住:您發佈將導致一個完整的表掃描查詢。我意識到這不是你的問題,因此我發表評論。但是隨着您的表大小的增長,這可能會導致您的應用程序出現一些與性能相關的問題。您至少應*考慮在分區內搜索(減少到分區掃描)。 –

+1

希望我可以加倍投票。大眼睛@DavidMakogon –

回答

4

查詢本身及其響應將在單個計費事務中(與數據庫事務不同)。但是,該響應可能不包含您請求的所有行。如果結果集特別大,您將得到一個連續令牌。當您使用延續標記拉動更多行時,將發生另一個事務。

+1

爲了闡明「特別大」,結果集不能大於1000行。如果有更多行可用,則會得到一個連續標記。但是,您也可以使用結果集少於1000行的持續令牌。即使有符合條件的行,也可以使用0行和連續令牌獲得結果集。如果你沒有通過PK/RK查詢,你更有可能獲得連續令牌。 – knightpfhor

0

這是怎麼回事?每秒(帳戶) http://azure.microsoft.com/en-us/documentation/articles/storage-performance-checklist/#subheading25

實體

用於訪問表中的可擴展性限制爲每秒20000個實體(1KB各)一個帳戶。一般而言,插入,更新,刪除或掃描的每個實體都計入此目標。所以包含100個實體的批量插入可以計爲100個實體。 掃描1000個實體並返回5的查詢將計爲1000個實體。

反正這裏
瞭解Windows Azure存儲帳單 - 帶寬,事務和容量 http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx