0

非常に重いプロセスを実行するストアドプロシージャがあります。約30のテーブルを反復処理しながら、SQL挿入スクリプトを再生成し、そのプロセスが終了した後、Xという名前のテーブルへのスクリプトの挿入を開始します。プロセスには約20分かかり、これは受け入れられません。最後に知っておく必要があるのは、.NETで作成されたWebメソッドによってプロシージャが呼び出されることです。

PS:テーブルにはインデックスがあります。

これが私の質問です

  1. この問題を解決するためにマルチスレッドを使用したいと思います。しかし、それが役立つかどうかわかりませんか?spを5つにスライスし、同時に5つの異なるスレッドから呼び出します。処理の開始から終了までの時間を短縮するのに役立つのだろうか?
4

3 に答える 3

2

ストアド プロシージャの他のセクションが完了するのをブロックしたり待機したりすることがないため、これは機能する可能性があります。明らかに、サーバーの物理リソースによって依然として制約されています。正直なところ、確実に判断できる唯一の方法は、実際に実行してパフォーマンスを測定することです。

ストアド プロシージャの各部分の依存関係を正確に分析してから、確認のためにもう一度実行してください。

幸運を。

于 2012-08-03T07:04:22.677 に答える
0

インデックスを持つテーブルへの大量の挿入で得られるパフォーマンスへの影響を考慮しましたか。まだ行っていない場合は、インデックスのないテーブルでプロセスの挿入部分を試して、利益を測定してください。有益であることが判明した場合は、インデックス作成のスクリプトを作成し、挿入後に実行します。

スレッド化は役立つかもしれませんが、私の経験では、SQL プロセスを最適化するとより多くの利点が得られる可能性があります。私はあなたの調査結果を聞くことに興味があります。

于 2012-08-03T07:28:14.473 に答える