2017-01-20 10 views
0

Azure hits database cpu limits too easilyで説明したのと同様の問題が発生しています。 Azure Elasticプールも使用しており、顧客ごとに新しいデータベースを作成しています。私たちはEF6-code-firstを使用してSQLの処理を行います。パフォーマンスAzureエラスティックプールデータベース

ウェブフロントエンドを使用すると、ユーザーを作成できます。週に何度も何度も何度も何度も何度もやっていますが、データベースは部分的に作成されており、Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagementというエラーが出ます。 このクライアント/ dbを削除して再度作成すると正常に動作します。 もちろんこれは非常に面倒です。このエラーをキャッチし、dbを削除してコードを作成し直しています。これは誰も似たような経験を持っていて、うまくいけばよりよい解決策ですか?

また、データベースの作成には3〜5分の時間がかかります。私たちはデータベースごとに18テーブルしか持っていません。私たちはこれをスピードアップできますか?

ワークフローの次のステップは、ユーザーがアップロードしたXMLファイルを解析することです。 EF6を使用してモデルを記入し、データベースに保存します。これは本当に遅いです。 XMLファイルには、複数のテーブル(約15個のテーブル)に必要な従業員データが含まれています。たとえば、4416人の従業員を含む9.7MBのXMLファイルがあり、 '.save()'ステップには約12分かかります。クライアントに毎年約25のXMLファイルがあり、5年を一度にアップロードすると、この節約には時間がかかります。

すでにコードを見て、EF6の境界線を見ても、私たちはもっと最適化できるとは思っていません。 Azureの購読の設定を見ていますが、ドキュメントは怖いので、より良いパフォーマンスを得るために何を変えるべきかを知ることはできません。

ご指摘いただきありがとうございます。

答えて

0

私はマイクロソフトのAzure上でこの質問> AzureのSQLデータベースのフォーラムポストに交差:https://social.msdn.microsoft.com/Forums/en-US/b7c7ad0a-0be4-4b15-8ae6-494181ec60b1/how-to-increase-max-number-of-databases-allowed-without-increasing-pricetier?forum=ssdsgetstarted をそして答えは:

あなたが他の層に部分的に(特定のリソースのみ)を拡張することはできません。データベースの最大数だけをスケールすることはできません。

これは私が望んでいた答えではありません。

0

私は、非常に同様に新しいデータベースシャードで新しい顧客インスタンスを作成するクラウドアプリケーションを持っています。私はこれらのAzureデータベースを作成するコードが非常に耐障害性でなければならないことを発見しました。私がしていることは次のとおりです。

  1. データベースを作成するときに、非常に長いタイムアウトを使用してください。復帰には長い時間がかかります。

  2. スクリプトが実行され、アプリケーションが実行されても、データベースはまだ使用できません。私は10秒ごとにデータベースに対して実行する簡単なクエリを持っています。まず、実行時にクエリが例外をスローします。私はエラーがバブリングするのを防ぐために例外をキャッチします。しばらくすると、クエリが正常に実行され、データベースが要求を受け取る準備ができていることがわかります。私は、Azureがテーブルを正常に作成できない場合、不定ループを防ぐために50回の試行を中断します。

さて、それは次のように/定期的なプログラムの流れのためのキャッチを試してみて、何度もリソースを打つために使用する一般的に悪い習慣だが、これは100%の作品、私が見つけた唯一のアプローチがありますこの問題の時間。

関連する問題