0

約 100000 人のユーザーから同時に (3 時間以内に) 呼び出される Web サービスがあります。このサービスは、Entity Framework 4.1 を使用して SQL データベースを読み取り、更新します。ここにコードがあります

    [WebMethod]
public bool addVotes(string username,string password,int votes)
{
    bool success= false;

    if (Membership.ValidateUser(username, password) == true)
    {
        DbContext context = new DbContext();
        AppUsers user = context.AppUsers.Where(x => x.Username.Equals(username)).FirstOrDefault();
        if (user != null)
        {
            user.Votat += votes;
            context.SaveChanges();
            success = true;
        }
    }
    return success;
}

Web サービスは Android モバイルから呼び出されます (私が言ったように、おそらく 100000 よりも多いかもしれませんが、それは今のところ重要ではありません)。デッドロックの可能性や問題が発生する可能性はありますか?

データベースから読み取るときに何が起こり、更新時に何が起こるか。回答の1つが言ったように:各ユーザーごとにフィールドVoteのみを更新しています。これに問題がある場合、どのように修正するようアドバイスしてくれますか。

前もって感謝します :)

4

1 に答える 1

1

これで問題ないはずです。

私が言う理由は、私が知る限り、このメソッドがユーザーに代わって呼び出されたときに起こる唯一のことはVotat、データベース内の行の投票数 ( ) が増加することです。ユーザーが自分の行のみにアクセスし、99999 人の他のユーザーの 1 人がアクセスする可能性のある行にアクセスしない限り、ユーザー間の競合はなく、これは適切にスケーリングされるはずです。

于 2013-10-06T15:17:04.353 に答える