11

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

4

4 に答える 4

5

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

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

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

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

于 2008-10-07T13:46:25.677 に答える
2

DBを2005年に移行した後、

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

最初に試してから、パフォーマンスをもう一度確認してください

于 2008-08-10T16:59:30.227 に答える
1

クエリで副選択を使用しています

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

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

于 2008-08-28T20:33:29.747 に答える
1

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

于 2008-08-10T17:01:28.523 に答える