SQL Server 2005 データベースを互換性レベル 80 で実行すると、パフォーマンスに悪影響がありますか?

StackOverflow https://stackoverflow.com/questions/7237

  •  08-06-2019
  •  | 
  •  

質問

ソフトウェアは SQL Server 2000 および 2005 上で実行できる必要があります。開発を簡素化するために、SQL Server 2005 データベースを互換性レベル 80 で実行しています。ただし、場合によっては、SQL 2000 よりも SQL 2005 の方がデータベースのパフォーマンスが遅くなるようです (ベンチマークを使用してこれを確認していません)。互換性レベルを 90 にアップグレードすると、SQL 2005 サーバーのパフォーマンスが向上しますか?

役に立ちましたか?

解決

SQL Server 2005 データベース エンジンは SQL Server 2000 エンジンよりも約 30% 高速であるはずだとどこかで読んだ気がします。これらの利点を得るには、データベースを互換モード 90 で実行する必要がある場合があります。

しかし、mssql 2000 と比較して mssql 2005 を使用するとパフォーマンスが大幅に低下する可能性がある 2 つのシナリオに遭遇しました。

  1. パラメータスニッフィング:ストアド プロシージャを使用する場合、最初にプロシージャを呼び出すと、SQL サーバーは一度に 1 つの実行プランを計算します。実行計画は、その呼び出しに指定されたパラメータ値によって異なります。私たちの場合、通常は 10 秒ほどかかるプロシージャが、mssql 2005 では何時間も実行されています。見てみましょう ここ そして ここ.

  2. 分散クエリを使用する場合、mssql 2005 は、リモート サーバー上の並べ替え順序に関する前提条件によって動作が異なります。デフォルトの動作では、サーバーはクエリに含まれるリモート テーブル全体をローカルの tempdb にコピーし、結合をローカルで実行します。回避策は、リモート サーバーから転送される結果セットを正確に制御できる OPENQUERY を使用することです。

他のヒント

DB を 2005 に移行した後、

フルスキャンで統計を更新しますか?インデックスを再構築しましたか?

まずそれを試してから、パフォーマンスを再度確認してください

参考までに、互換性レベル 90 を実行すると、古いスタイルの外部結合などの一部の機能がサポートされなくなります。 (*= and =*)

使っていますか 副選択 あなたの質問の中で?

私の経験から言えば、SQL Server 2000 では正常に動作する副選択を含む SELECT ステートメントは、SQL Server 2005 でもクロールできます (10 倍ほど遅くなる可能性があります)。

実験を行ってください。1 つのクエリを書き直して副選択を削除し、そのパフォーマンスがどのように変化するかを確認してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top