1

SQLテーブルとVB.NETアプリケーションがあります。アプリケーションはSQLテーブルをデータテーブルにロードし、いくつかのWebサイトをフェッチしてレコードへのデータの更新を開始します。データテーブルの行に新しいデータを入力するには、平均1.4秒かかります。

今、私はsql updateコマンドを使用してsqlテーブルの単一のレコードを更新し、レコードが更新されるたびにそれを実行するのは大丈夫かどうか疑問に思っていました。つまり、1.4秒ごとに単一のレコードに対してupdateコマンドを実行します。

問題は、他のアプリケーションがこのテーブルを同時に使用し、そのうちの1つが同じテーブルに書き込むが、他の列に書き込むことです。このプロセス中に、テーブルが他のアプリケーションに対してロックされますか?

4

2 に答える 2

1

1つのレコードを更新するのに1.4秒かかる理由を見つける必要があります。VB.NETが何らかの処理を行う必要があるためである可能性があります(その間fetching some websites)。たとえば、必要な計算を実行するのに1.3秒(クライアント時間)、単一のレコードを更新するのに0.1秒(サーバー時間)かかる可能性があります。この場合、データベースアクセス時間を最小限に抑えるために、更新をバッチで実行できます。

テーブルはロックされますが、短時間だけなので、一般的にはそれについて心配する必要はありません。

于 2013-02-05T14:27:23.600 に答える
1

SQLはデフォルトではテーブルをロックしませんが、これらのアプリが変更を行っている場合にデータが破損しないように、更新中にテーブルをロックする必要があります。パフォーマンスには小さな打撃がありますが、混乱したために再構築するよりはましです。これはロックの良い説明です

http://www.developerfusion.com/article/84509/managing-database-locks-in-sql-server/

他のアプリケーションが更新中にテーブルをクエリしているだけの場合、影響はないはずですが、更新の途中でクエリを実行すると、奇妙な結果が得られる可能性があります。ロックは主に、2人が同時に同じレコードを変更するリスクに関するものです。

于 2013-02-05T14:28:10.883 に答える