0

私のアプリケーションは、ローカル データベースから分散データベース サーバーにテーブルをコピーするだけです。コピーするデータはかなり大きく、約 1000 件のレコードがあり、約 30 秒でジョブを完了しました (正確にどれくらいの時間がかかるかはわかりません)。このアプリケーションは、スケジュールまたはユーザー入力 (強制メソッド) で実行されます。

データベース サーバーは JHA (Jack Henry and Association) を使用しています。

問題は、データベース サーバーの CPU とメモリの使用率が非常に高くなることがあるということです。これにより、同じデータベース サーバーを使用する他のアプリケーションがデータベースからデータをフェッチできなくなります。いくつかのトレースを行った後、アプリケーションからの操作が非常に高い CPU とメモリを使用していることがわかりました。

私の解決策は、データをコピーするときです。一度に 100 レコードをコピーしてから、アプリケーションを 100 ミリ秒スリープ状態にしてから、次の 100 レコードをコピーするというように、すべてのデータがコピーされるまで続けます。これで十分ですか?私の解決策は大きな効果がありますか? あなたの提案は何ですか?

参考までに、私のアプリケーションは複数のコンピューターから実行されているため、複数のクライアントコンピューターと1つのデータベースサーバーです。そして、私は本当にここであなたの助けが必要です:)

4

1 に答える 1

0

このリンクhttp://msdn.microsoft.com/en-us/library/ff649152は廃止されましたが、一般的なプロセス ガイダンスはパフォーマンスの問題を解決するのに役立ちます。

また、いくつかのツールに投資します。VS にはいくつかのパフォーマンス アナライザー ツールが付属しており、SDK にはいくつかのパフォーマンス アナライザー ツールがあり、PerfView http://www.microsoft.com/en-us/download/details.aspx?id=28567を使用できます。DB プラットフォームも確認する必要があります。そこで何が起こっているのですか?もしかして索引が無い?または未使用のインデックス?

  1. パフォーマンスの目標は何ですか?
  2. 測定し、ベースラインを持ち、
  3. 調査、オプションの生成、
  4. 1 つだけ実装する (1 つだけ)
  5. 再度測定します。
  6. 何かを得た?いいえ、ロールバック 3、次のオプションを選択するか、オプションがない場合は 2 を実行します
  7. パフォーマンス目標に到達しましたか? いいえ、3 に進みます。
于 2012-08-18T18:18:29.650 に答える