4

データベース sql-azure を使用する Web ロールによって実装されているシステムでは、特定のクエリで繰り返しタイムアウトが発生します。

これらのタイムアウトは日中の数時間発生し、その後は表示されなくなります。

クエリには、行数がそれほど多くない (約 800,000 行) 2 つのテーブルがあり、主キーを使用した結合があります。

実行計画は問題ありません。インデックスは適切に使用されています。通常、クエリの実行には 2 秒かかります。

EntityFramework を使用しないテストでも同じ結果が得られます。

タイムアウトの場合、一時的な障害処理は適用されません。

この動作の原因は何ですか?

4

1 に答える 1

3

過去に SQL Azure を使用して同様の問題が発生しました。10 行未満のテーブルに対して頻繁に実行されるクエリや、標準の .Net メンバーシップ プロバイダーのクエリでさえ、すべてタイムアウトで断続的に失敗しました。これは通常、サービスでの活動がほとんどまたはまったくないときです。主に夜。

SQL タイムアウト (通常は読み取り操作) で安全に再試行できる一般的に使用される領域では、一時的なエラー処理ブロックから取得したカスタム エラー検出戦略にタイムアウト例外を追加しました。ただし、あなたが述べたように、これはほとんどの場合適切ではありません。

これまでに Azure サポートから受け取った最良の説明は、SQL Azure は実際には複数のクライアントによって使用される共有 SQL Server インスタンスであるということです。1 人のユーザーが集中的な操作を実行すると、このように他のユーザーに影響を与える可能性があります。でも; これは受け入れられないと考えており、私たちはまだ SQL Azure サポートと連絡を取り、この種の活動が私たちに影響を与えるのを抑制していない理由を確認しています.

最善の策は次のとおりです。

  • フォーラムを通じて、または直接SQL Azure サポートに連絡してください (サポート パッケージをお持ちの場合)。
  • もし可能なら; 新しい SQL Azure インスタンスをセットアップし、データベースを移行してみてください
    • この問題は、1 つの SQL Azure インスタンスで断続的に発生します。他の 2 つのインスタンスでは経験したことがありません。

補足として; タイムアウト例外をまだ受け取っている理由について、Azure サポートからの返信を待っています。

于 2013-07-12T10:09:40.857 に答える