ソフトウェアはSQLServer2000および2005で実行できる必要があります。開発を簡素化するために、互換性レベル80でSQL Server 2005データベースを実行しています。ただし、SQL 2005のデータベースパフォーマンスは、SQL2000よりも遅い場合があります(ベンチマークを使用してこれをまだ確認していません)。互換性レベルを90にアップグレードすると、SQL 2005サーバーのパフォーマンスが向上しますか?
4 に答える
どこかで、SQL Server 2005 データベース エンジンは SQL Server 2000 エンジンよりも約 30% 高速であると読んだと思います。これらの利点を得るには、データベースを互換モード 90 で実行する必要があるかもしれません。
しかし、mssql 2000 と比較して mssql 2005 を使用するとパフォーマンスが劇的に低下する可能性がある 2 つのシナリオに遭遇しました。
パラメータ スニッフィング: ストアド プロシージャを使用する場合、SQL Server は一度に 1 つの実行プランを計算します。最初にプロシージャを呼び出します。実行計画は、その呼び出しに指定されたパラメーター値によって異なります。私たちの場合、通常は約 10 秒かかるプロシージャが、mssql 2005 では何時間も実行されています。こちらとこちらをご覧ください。
分散クエリを使用する場合、mssql 2005 は、リモート サーバーでの並べ替え順序に関する仮定に関して、異なる動作をします。デフォルトの動作では、サーバーはクエリに含まれるリモート テーブル全体をローカルの tempdb にコピーしてから、ローカルで結合を実行します。回避策は、リモート サーバーから転送される結果セットを正確に制御できる OPENQUERY を使用することです。
DBを2005年に移行した後、
フルスキャンで統計を更新しますか?インデックスを再構築しましたか?
最初に試してから、パフォーマンスをもう一度確認してください
クエリで副選択を使用していますか?
私の経験から、SQL Server 2000で正常に実行される副選択を含むSELECTステートメントは、SQL Server 2005でクロールできます(10倍遅くなる可能性があります)。
実験を行います-1つのクエリを書き直して、副選択を削除し、そのパフォーマンスがどのように変化するかを確認します。
また、参考までに、互換性レベル90を実行すると、古いスタイルの外部結合など、一部の機能がサポートされなくなります。(*= and =*)