0

データベースを備えたサーバークライアントプログラムがあります。クライアントはサーバーにデータを送信し、サーバーはそのデータをデータベースに保存します。問題は、複数のクライアントが同時にサーバーにデータを送信し、サーバーがそれをデータベースに書き込もうとしている場合、問題が発生する可能性があるかどうかです。

例: client1 がメソッドを呼び出します。

client.save_data(data1);

client2 がメソッドを呼び出します。

client.save_data(data2);

そして、サーバーは次のことを試みます。

save_data(data){
  sql.insert_intoDB(data);
}
insert_intoDB(data)
{
  //not real code, just to show what i mean
   query = "insert into tablename values "+data;
   query.execute;
}

これをC#で処理する良い方法は何ですか? それともリスクは全くありませんか?

thx、よろしく。

4

2 に答える 2

1

問題はありますか?

一般に、はい、この問題は同時実行性として知られています。データベースが異なれば、この問題はさまざまな方法で処理されます。通常、挿入よりも更新を処理するときの方が問題になります。

すべてではないにしても、ほとんどのデータベース エンジンは各挿入を個別に処理するため、心配する必要はないと思います。ただし、安全のために、何か問題が発生した場合にロールバックできるように、常にトランザクションを使用する必要があります。

C# を使用している場合は、 TransactionScopeを使用することをお勧めします。

于 2012-08-29T23:29:36.123 に答える
1

データを挿入するだけの場合、同時実行性の問題は発生しません。挿入操作はキューに入れられ、データベース エンジンが受け取った順序で挿入されます。これは常に線形です。

于 2012-08-29T23:25:11.930 に答える