4

コンソールアプリケーションを開発しています。初期チェックと前提条件を実行した後、SQL テーブルの行に基づいて 5 つのスレッドを導入する必要があります。たとえば、テーブルが 1000 行で構成されている場合、行を分割して 5 つのスレッドすべてに均等に割り当てる必要があります。この場合、分割を行い、それぞれに 200 行を割り当てます (データテーブルを作成します)。 thread を指定すると、5 つのスレッドすべてがデータテーブルと同時に SP を呼び出します。5つのスレッドで並列に実行されるため、SPで処理するものはありますか?SP内で挿入、削除、および切り捨てを処理するにはどうすればよいですか? 複数の挿入または削除または切り捨てクエリが同時に実行された場合、衝突が発生しますか? または、SPのSQLステートメントに対して1つの操作のみを許可するSPのロック機能はありますか?

私はこの種の要件に慣れていないので、発生する可能性のある問題とそれを克服する方法を見つけるのに助けが必要です. この種のシナリオに従うためのヒントやコツが得られれば素晴らしいと思います..

前もって感謝します..

アビベンカット

4

1 に答える 1

0

SQL ServerのISOLATION LEVEL設定を見てください。データの破損を防ぐために、可能な限り高く設定することが望ましいですが、多くのロックが発生する可能性があり、並行して処理を行うと問題が改善されるどころか悪化する可能性があります。

プロシージャのコードによっては、デッドロックが発生する可能性もあります。これは、いくつかの呼び出しをロールバックするだけで、再発行する必要があり、追加のデッドロックを引き起こす可能性があり、気が付く前に、データベースは完全に混乱した状態になります。

このようなデータ集約型の操作に対して私が推奨するのは、それらをまったくパラレライズせず、1 つずつ実行することです。サーバーがマルチコア マシンである場合、それ自体で物事を麻痺させることさえあるかもしれません。

もちろん、これらは広い手の波です。特定の情報を取得するには、データの構造 (インデックスを含む) と実行されるコードを分析する必要があります。

于 2013-01-22T08:19:14.647 に答える