- 締切済み
Sqlserver2008への移行 効率問題
現在、SQLServer2000を使って社内システムを構築しています。 サーバーのハード保守切れに伴い、 SQLServer2008へ移行しようとしています。 移行前の環境は、 OS WindowsServer2000 DB SQLSERVER2000 移行後の環境は、 OS WindowsServer2008R2 Standard (64bit) DB SQLSERVER2008R2 (64bit) となります。 移行後、SQLジョブの処理速度が大幅に遅くなることを起きました。 SqlServer2000の頃は、1分程度掛かってSQLジョブを行っていましたが、 SqlServer2008で21時間以上かかり、効率が大幅に遅くなってしてしまいます。 下記のSQL文を実行してみると、インデックスが違うことを分かりました。 SELECT i.name AS index_name ,o.name AS table_name ,col.name AS column_name ,i.statblob FROM sysindexkeys ik ,sysobjects o ,syscolumns col ,sysindexes i WHERE ik.id = o.id AND ik.id = col.id AND ik.colid = col.colid AND ik.id = i.id AND ik.indid = i.indid AND o.xtype = 'U' ORDER BY i.name ,ik.id ,ik.indid ,ik.keyno 違う箇所は、SqlServer2000で「_WA_Sys_」というインデックスがあって、 SqlServer2008上にありません。 (「_WA_Sys_」を除けば、他のインデックスは全く同じです) 上記インデックスの差異は、効率と関係がありますでしょうか。 あれば、どうすればいいでしょうか。 なければ、他の解決案を頂ければ助かります。 ご教授のほど、よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- nora1962
- ベストアンサー率60% (431/717)
今すぐ確認できませんが、調べてみます。 ただ、その遅いジョブはどんなSQLでどんなデータ状況で実行計画はどうなっているのでしょうか? 2000の時と同じ実行計画になっていますか? そのあたりを提示いただければ他からも解決の糸口が見つかるかもしれません。
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
私のパソコン上では、すぐにレスポンスが帰って来るので、原因が特定できません、すみません。 テスト環境WindosVistaUltimate(32ビット)+SQL Server2008R2ExpressEditin。 一応確認ですが、どのデータベース上でも同じでしょうか、たとえばmosterデータベース上では。
- 原沢 信道(@nharasawa)
- ベストアンサー率53% (90/168)
テーブル名が古い仕様の物のようですが、新しい仕様のテーブル名でトライしてみてはどうでしょうか。 sysindexkeys-->sys.index_columns sysobjects-->sys.objects syscolumns-->sys.columns sysindexes-->sys.indexes
お礼
ご解答を頂きまして、ありがとうございました。 新しい仕様のテーブル名を適用しても、2008の結果は変わりません。 他の意見を頂けませんか。 宜しくお願いいたします。
お礼
ご返信ありがとうございました。 ジョブは、普通の集計SQLです。(3テーブルからデータを抽出する) データ状況と実行計画は、2000の時と同じです。 3テーブルのデータ件数は、 テーブルA:37万件 テーブルB:37万件 テーブルA:18万件 となっています。 ※このジョブだけ遅くなるではありません、他のジョブも2000より遅くなってしまいました。