短いバージョン:パフォーマンスを桁違いに向上させるために、マルチスレッド方式で数十または数百のテーブルパーティションから読み取ることができますか?
長いバージョン:Azureテーブルストレージに数百万行を格納しているシステムに取り組んでいます。データを小さなパーティションに分割します。各パーティションには約500レコードが含まれます。これは、ユニットの1日分のデータを表します。
Azureには「合計」機能がないため、1年分のデータを取得するには、事前キャッシュを使用するか、AzureWebまたはワーカーの役割でデータを自分で合計する必要があります。
次のことを前提としています。-パーティションの読み取りが別のパーティションのパフォーマンスに影響を与えない-パーティションの読み取りには、ネットワーク速度とサーバーの取得に基づくボトルネックがあります。
次に、大量のデータ(1年、365パーティション)をその場ですばやく合計したい場合は、大規模な並列アルゴリズムを使用でき、スレッド数にほぼ完全に対応できると推測できます。たとえば、50以上のスレッドで.NET並列拡張を使用して、パフォーマンスを大幅に向上させることができます。
私たちはいくつかの実験の設定に取り組んでいますが、これが以前に行われたかどうかを確認したかったのです。.NET側は基本的にアイドル状態であり、待ち時間の長い操作を待機しているため、これはマルチスレッドに最適のようです。