古いサーバー(Windows 2008 / SQL Server 2008/16 GB RAM / 2 x 2.5 GHzクアッドコア/ SASディスク)から大規模なWebサイトとデータベースを、より優れた新しいサーバー(Windows 2008 R2 / SQL Server 2012 SP1 / 64 GB RAM / 2 x 2.1 GHz 16コアプロセッサ/ SSDディスク)。
古いサーバーのデータベースファイルをデタッチし、新しいサーバーにコピーして添付しました。すべてがうまくいきました。
その後、互換性レベルを110に変更し、統計を更新し、インデックスを再構築しました。
残念ながら、新しいSQL 2012サーバーでは、ほとんどのSQLクエリが古いSQL 2008サーバーよりもはるかに遅い(2-3-4倍遅い)ことに気付きました。
たとえば、約70万件のレコードがあるテーブルでは、古いサーバーではインデックスのクエリに約100ミリ秒かかりました。新しいサーバーでは、同じクエリに約350ミリ秒かかります。
すべてのクエリで同じことが起こります。
ここで助けていただければ幸いです。チェック/検証する内容を教えてください。新しいSQL Serverを搭載した優れたサーバーではパフォーマンスが低下すると信じるのは非常に難しいためです。
詳細:
メモリは最大に設定されています。
私はこのテーブルとインデックスを持っています:
CREATE TABLE [dbo].[Answer_Details_23](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[SurveyID] [int] NOT NULL,
[CustomerID] [int] NOT NULL default 0,
[SummaryID] [int] NOT NULL,
[QuestionID] [int] NOT NULL,
[RowID] [int] NOT NULL default 0,
[OptionID] [int] NOT NULL default 0,
[EnteredText] [ntext] NULL,
CONSTRAINT [Answer_Details_23_PK] PRIMARY KEY NONCLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
CREATE NONCLUSTERED INDEX [IDX_Answer_Details_23_SummaryID_QuestionID] ON [dbo].[Answer_Details_23]
(
[SummaryID] ASC,
[QuestionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
私はこのクエリを実行しました:
set statistics time on;
select summaryid, count(summaryid) from Answer_Details_23 group by summaryid order by count(summaryid) desc;
set statistics time off;
古いサーバー-SQL Serverの実行時間:CPU時間= 419ミリ秒、経過時間= 695ミリ秒。
新しいサーバー-SQL Serverの実行時間:CPU時間= 1340ミリ秒、経過時間= 1636ミリ秒。
ここにアップロードされた実行計画:http ://we.tl/ARbPuvf9t8
後の更新:
- AMD 2.1GHz Opteron 16コアプロセッサは、Intel 2.5GHzクアッドコアプロセッサよりもひどく見えます
- Windowsの電源オプションをバランサードからハイパワーに変更する大幅な改善
- 最大並列度を8に、コストしきい値を4に変更してさらに改善
現在、SQL Serverの実行時間:CPU時間= 550ミリ秒、経過時間= 828ミリ秒。
まだ古いサーバーよりも悪いですが、それほど悪くはありません。他の提案(ローカルクエリの最適化以外)がある場合は、お気軽にコメントしてください。