ATS(Azure Table Storage)を使用して500エンティティ/秒/パーティションを回避する方法はありますか?ダーティリードでOK。挿入がすぐに読み取れない場合は、OKです。
いくつかの大きなテーブルをSQLからATSに移動しようとしています。
スケール:これらのテーブルのため、サイズはSQLAzureの150GBの制限を超えています
挿入速度:クエリ速度の転置インデックス。挿入順序はテーブルクラスター化インデックスによってソートされないため、SQLテーブルが急速に断片化されます。ATSには、SQLよりも挿入の利点がある可能性があります。
費用:ATSの月額費用は低くなります。ただし、ATSは数百万行という高いロードコストがあり、ロードの順序がパーティションごとではないため、バッチ処理できません。
クエリ速度:検索が1つのpartitionKeyだけで行われることはほとんどありません。検索には、SQLコンポーネントと0個以上のATSコンポーネントが含まれます。このATSクエリは、常にpartitionKeyとreturnrowKeysによって行われます。partitionKeyでの生の検索は高速です。問題は、エンティティ(行)を返す時間です。特定のpartitionKeyには、平均1,000のrowKeyがあります。これは、500エンティティ/秒/パーティションで2秒です。ただし、3分以上に相当する100,000を超えるrowKeyを持つpartitionKeyがいくつかあります。一度に10,000行をSQLで返します。結合の力で、whereでそれらの行を考慮するために100,000行を下げる必要がないため、クエリは10秒を超えません。
ATSでこの選択されたエンティティの速度の周りにありましたか?スケールとインサート速度については、ATSに行きたいです。
WindowsAzureストレージの抽象化とそのスケーラビリティのターゲット
WindowsAzureテーブルストレージのスケーラブルなパーティション化戦略の設計
変更されないクエリ結果のエンティティ追跡をオフにします。context.MergeOption=MergeOption.NoTracking;