0

SQL Server 2008 R2 からデータを読み取る VB.NET で記述されたアプリケーションがあります。ログイン時に、ユーザーは多くのデータベース ファイル (ドロップダウン リストで利用可能) の 1 つを選択し、ユーザー名とパスワードを入力してログインします。ログイン中、アプリケーションは「strings」と呼ばれる選択されたデータベースのテーブルから読み取り、アプリケーションの作業環境を作成するために Do While ループが 25 ~ 30 個の変数に値を入力します。

Do While ループの開始時と終了時にタイム トラッキングを設定したところ、データベースの 1 つではすべての値を読み取るのに 26 秒かかり、別のデータベースでは 0 秒かかることがわかりました (ミリ単位で追跡していないため、秒レベル)。

皮肉なことに、26 秒かかるデータベースの「strings」テーブルには 125 行あり、0 秒かかるデータベースには 159 行あります。どうやらコードは同じで、データベース構造も真のレプリカです (両方のデータベースは同じスクリプトを使用して生成されました)。

私はすべての可能性を考えましたが、ユーザーのログイン時間を遅らせるような大きな違いがある理由がわかりません。

どうすればこれを理解できるかを教えてください。

ありがとう

4

2 に答える 2

0

具体的な情報がなければ、何が起こっているのかを見つけるのはかなり困難です。約 100 件のレコードを返すのに数十ミリ秒以上かかることはありません。通常、単純なコードはパフォーマンスに影響しません。2 番目のサーバーに深刻なパフォーマンスの問題があるようです。

  • 両方のサーバーに対して SQL Server Management Studio からクエリを実行してみてください。CPU 負荷を確認し、遅いサーバーでメモリを解放してください。
  • ネットワークのパフォーマンスを確認してみてください (ping を実行するか、ファイルのダウンロード時間を測定します)。
  • サーバー上で直接クエリを実行してみてください。
于 2013-05-18T15:47:17.470 に答える
0

2 つのデータベース ファイルを何度も調査して比較した結果、データベース ファイル (mdf) とログ ファイル (ldf) の「初期サイズ」が大きく異なることがわかりました。

高速データベースの mdf ファイルと ldf ファイルは、それぞれ 200 MB を超えていました。ただし、遅いデータベースはそれぞれ 11 MB と 16 MB でした。Microsoft SQL Management Studio を使用して、低速データベース ファイルの「初期サイズ」を高速データベースと同じ値に変更し、SQL Server を停止してから起動しました。現在、性能差はありません。

誰かが役に立つと思った場合に備えて、これを答えとして入れてください。

于 2013-05-19T16:12:47.230 に答える