Azureテーブルストレージのパフォーマンスに一貫した問題があります。私はユーザーアカウントを保持するテーブルを照会しています。テーブルにはPartitionKey
とRowKey
の両方にuserIdが格納されているため、簡単にポイントクエリを作成できます。ポイントクエリを結合するときのAzureテーブルストレージでの信頼性の低いパフォーマンス
私の問題は、単一のクエリで複数のユーザーを取得する必要があることがあるためです。これを達成するために、私にはフィルタ文字列を作成するクラスがあります。この問題に関連しない動作方法は、しかしながら、これは出力の例である:
(PartitionKey eq '00540de6-dd2b-469f-8730-e7800e06ccc0' and RowKey eq '00540de6-dd2b-469f-8730-e7800e06ccc0') or
(PartitionKey eq '02aa11b7-974a-4ee9-9a8e-5fc09970bb99' and RowKey eq '02aa11b7-974a-4ee9-9a8e-5fc09970bb99') or
(PartitionKey eq '040aec50-ebcd-4e5d-8f58-82aea616bd82' and RowKey eq '040aec50-ebcd-4e5d-8f58-82aea616bd82') or
// up to 22 more (25 total)
それは2-5秒の間、実行に時間がかかり、クエリの最初の実行時に、そしてありますエラーが発生しているデータが欠落しています。 2回目の実行時には、クエリの完了に0.2〜0.5秒かかり、その中にすべてのデータが含まれます。
私はまたちょうどPartitionKey
を供給してみましたが、違いはありませんでした。私は、ポイントクエリがより良い実行すると仮定していた。
バグのこのプレゼンテーションからは、最初にリクエストされたときにデータが「寒い」ことが原因であると推測できます。その後、連続したリクエストで「ホット」キャッシュから取得されます。
この場合、パフォーマンスを向上させるためにフィルタ文字列を変更するにはどうすればよいですか?あるいは、テーブルストレージクエリのタイムアウトを変更して、完了までの時間を増やすにはどうすればよいですか?私のテーブルストレージのスケーリングを増やすことは可能ですか?
この問題を解決していただきありがとうございます。 –
この動作はどこに文書化されていますか? – Endrju
このドキュメントを参照できます:http://azure.microsoft.com/en-us/documentation/articles/storage-table-design-guide/ –