0

残念ながら、AzureでホストされているMVC 3、SQLAzureがサポートする開発のメンバーシップ管理に最新のユニバーサルプロバイダーを使用しています。CSVファイルからユーザーをまとめて作成するルーチンをコーディングしました。ファイルが解析され、モデルが入力されます。次に、コレクション作成ユーザーを繰り返し処理します。

信じられないほどの時間がかかるキーラインは標準です

Membership.CreateUser(
   model.UserName, 
   model.Password, 
   model.Email, 
   null, 
   null, 
   model.IsApproved,
   out createStatus);

「大規模な」4コアサーバーでも、この1行が完了するまでに約1秒かかる場合があります。つまり、10,000人のユーザーは3時間近くかかることになります。データベースに直接それを行うには、可能であれば、おそらく数分かかるでしょう。

さらに悪いことに、既存のユーザーをチェックし、更新する必要がある場合も更新する必要があります。必要なインデックスを入れましたが、データベースは非常に高速です。率直に言って、このプロバイダーは何ができるでしょうか?

私は何か間違ったことをしているのですか、それともこのプロバイダーは大規模システムにはまったく役に立たないのですか?他の誰かがこれらの問題を抱えていましたか?

プロファイルプロバイダーには入りません。自分で書いたと言えば十分です。

4

1 に答える 1

2

以前はそのプロバイダーを使用していませんでしたが、重要なのは複数のユーザーを同時に作成することです。ユーザーあたり1秒が妥当です。さらに、ほとんどの時間はデータベースが戻るのを待つことに費やされます。現在のスレッドがデータベースが戻るのを待っているときに、新しいスレッドを作成して別のユーザーの作成を開始することをお勧めします。したがって、通常のforeachループでユーザーを1つずつ作成する代わりに、Parallel.ForEachを使用してください。これにより、ユーザーが自動的に並列に作成されます。http://msdn.microsoft.com/en-us/library/を参照してください。サンプルのdd460720.aspx

よろしくお願いします、

明徐。

于 2012-04-19T07:15:49.750 に答える