原則として、可能な限りテーブル スキャンを回避する必要があります。これらは非常にコストのかかる操作です (特に、多くのパーティションがある場合)。テーブル ストレスの観点からはそれほどではありませんが、集計レイテンシが非常に高くなります (以下で説明します)。とはいえ、それを避けることができない場合もあります。
ストレージ アーキテクチャを更新し、ターゲット制限を引き上げました。
http://blogs.msdn.com/b/windowsazure/archive/2012/11/02/windows-azure-s-flat-network-storage-and-2012-scalability-targets.aspx
各ストレージ アカウントは 20k IOPS/秒になりました。各パーティションは 2k/秒になりました
パーティションがどのように相互作用するかは少し微妙であり、それらがどのように使用されているか (および時間の経過とともに変化する) によって異なります。
Azure ストレージには 2 つの段階があります。1 組のサーバーが範囲を処理し、もう 1 組が実際のストレージ (つまり 3 つのコピー) を設定します。テーブルがコールドの場合、すべてのパーティションが 1 つのサーバーによって処理される場合があります。パーティションが持続的なストレス下に置かれると、システムはワークロード (すなわちシャード) を追加のサーバーに自動的に分散し始めます。シャードはパーティション境界で作成されます。
低/中のストレスの場合、シャードのしきい値に達することがないか、最小限の回数しかない可能性があります。また、アクセス パターンにもある程度の影響があります (追加のみの場合、シャーディングは役に立ちません)。すべてのパターンにわたるランダム アクセスは、はるかに優れた拡張性を発揮します。システムのリバランス中は、数秒間 503 応答が返された後、通常の動作に戻ります。
テーブル スキャンを実行すると、実際にはテーブルへのラウンド トリップが複数回行われます。クエリがパーティションの最後に到達すると、見つかったデータ (基準が満たされない場合はデータなし) と継続トークンを含む応答が返されます。その後、テーブルの一番下に到達するまで、クエリが何度も再送信されます (トークンが返されます)。これは SDK によって抽象化されますが、REST を直接呼び出した場合は表示されます。
テーブルのパフォーマンスの観点から、スキャンは現在スキャンしているパーティションにのみ影響します。
複数のパーティションにヒットする幅広いクエリを高速化するには、実際には複数の並列アクセス (たとえば、パーティションごとに 1 つのスレッド) に分割してから、クライアントで合体できます。実際には、返されるデータの量、テーブルの大きさなどによって異なります。