トップ回答者
SQLserver2005のメンテナンスプランでバックアップを実行すると時間が掛かってしまう

質問
-
こんにちは。山崎と申します。
先日、とあるお客様先で発生した症状で、
理由がわからず困っております。
何か調査方法や、改善につながるアドバイスを頂けると助かります。
【OS】
2003ServerR2 sp2
【SQL】
2005 standard sp2
【その他インストール済みだったアプリ】
MS Office2007
Trend Micro ServerPrptect
Acrronis TrueImage echo server for windows
【症状】
SQLserver2005のメンテナンスプランでバックアップを実行すると時間が掛かってしまう。
【経過について】
SQL2005をインストールした直後(SP適用無し状態で)、
メンテナンスプランで、完全バックアップのジョブを作成。
この時点でプランを実行すると3秒程度で終了していました。
SQLのSP2(MSのディスクキットに付属)を適用後、
同じメンテナンスプランを実行すると、
5分~10分程度掛かってしまうようになりました。
一応、バックアップファイルはできるんですが。。
ServerProtectのリアルタイム検索の除外フォルダには、
ちゃんとDB、ログ、バックアップフォルダは登録されておりました。
また、メンテナンスプランを利用せず、
DBを直接右クリックし「バックアップ」を実行した場合は、1秒程度で終了します。
以上です。
次回、ServerProtectのサービスを止めた状態で、
SQLの再インストールと、MSのサイトでダウンロードしたSP2の適用を試そうと思っています。
何かお気づきの点、注意点、改善策など思いつくところありましたら、
ご教授くださいますよう、よろしくお願いいたします。
回答
-
こんにちは、naginoです。
はじめに、パフォーマンス関連の問題は原因が様々ですので、掲示板上でのやりとりでの調査は一般に難しいです。
今回のケースでは、バックアップに関して、操作に応じて処理時間に変化があるということですが、
それぞれの違いを確認するとヒントが得られるかもしれません。
たとえば整合性のチェックであったり、空き領域の開放など、バックアップの際に付加できるオプションが
多数ありますが、それらについて差が無いかどうかをご確認ください。
あと、SPで互換性がなくなることは通常ありませんので考えにくいですが、念のためメンテナンスプランを別途新しく作り直し、
そちらでの処理時間もご確認ください。
また、Windowsのシステムログと SQL Server のログに何らかのエラーや警告が出ていないかも
あわせてご確認ください。
なお、可能でしたら処理時間がかかる際に、CPU、HDD、メモリのいずれに負荷がかかっているのかを
念のためご確認ください。
ご参考になれば幸いです。
-
ごめんなさい、ちょっとした突っ込みです。
> ちなみに、SQLServer2008の場合、どのユーザー(オブジェクト)にどのぐらいのCPU占用率を割り当てることも可能です。
確かに可能なんですけど、実装されているのがEnterprise Edition以上なんです。
というより、欲しい機能が全てEnterprise Editionにしか対応してなかったりします。
http://www.microsoft.com/japan/sqlserver/2008/prodinfo/features/eemerit.mspx
-
他の回答者の方々が色々回答しているようなのでアレですが、SQLプロファイラで何がボトルネックになっているか調べてみるのも一つの手だと思います。
[ファイル]-[新規トレース]で対象となるサーバーを指定し、使用するテンプレートでとりあえず[Standard]を選択して[実行]ボタンをクリックします。
また、中で色々なストアドプロシジャが動いているので、[ファイル]-[新規トレース]でもう一つトレースウィンドウを開きます。
今度は使用するテンプレートを[TSQL_SPs]に変更します。
次に[イベントの選択]タブをクリックして[すべての列を表示する]をチェックし、[Duration]という項目をチェックしてください。
以上の設定が終わったら[実行]ボタンをクリックしてください。これでストアドプロシジャの中身がトレースできます。
これでSQL Serverのトレースを取ることが出来ますので、Durationの値を見て、何がボトルネックになっているか確認することが出来ると思います。
すべての返信
-
こんにちは、naginoです。
はじめに、パフォーマンス関連の問題は原因が様々ですので、掲示板上でのやりとりでの調査は一般に難しいです。
今回のケースでは、バックアップに関して、操作に応じて処理時間に変化があるということですが、
それぞれの違いを確認するとヒントが得られるかもしれません。
たとえば整合性のチェックであったり、空き領域の開放など、バックアップの際に付加できるオプションが
多数ありますが、それらについて差が無いかどうかをご確認ください。
あと、SPで互換性がなくなることは通常ありませんので考えにくいですが、念のためメンテナンスプランを別途新しく作り直し、
そちらでの処理時間もご確認ください。
また、Windowsのシステムログと SQL Server のログに何らかのエラーや警告が出ていないかも
あわせてご確認ください。
なお、可能でしたら処理時間がかかる際に、CPU、HDD、メモリのいずれに負荷がかかっているのかを
念のためご確認ください。
ご参考になれば幸いです。
-
ごめんなさい、ちょっとした突っ込みです。
> ちなみに、SQLServer2008の場合、どのユーザー(オブジェクト)にどのぐらいのCPU占用率を割り当てることも可能です。
確かに可能なんですけど、実装されているのがEnterprise Edition以上なんです。
というより、欲しい機能が全てEnterprise Editionにしか対応してなかったりします。
http://www.microsoft.com/japan/sqlserver/2008/prodinfo/features/eemerit.mspx
-
他の回答者の方々が色々回答しているようなのでアレですが、SQLプロファイラで何がボトルネックになっているか調べてみるのも一つの手だと思います。
[ファイル]-[新規トレース]で対象となるサーバーを指定し、使用するテンプレートでとりあえず[Standard]を選択して[実行]ボタンをクリックします。
また、中で色々なストアドプロシジャが動いているので、[ファイル]-[新規トレース]でもう一つトレースウィンドウを開きます。
今度は使用するテンプレートを[TSQL_SPs]に変更します。
次に[イベントの選択]タブをクリックして[すべての列を表示する]をチェックし、[Duration]という項目をチェックしてください。
以上の設定が終わったら[実行]ボタンをクリックしてください。これでストアドプロシジャの中身がトレースできます。
これでSQL Serverのトレースを取ることが出来ますので、Durationの値を見て、何がボトルネックになっているか確認することが出来ると思います。
-
こんにちは、山崎です。
皆様にアドバイスありがとうございました。
昨日、再度お客様のところに訪問し、確認して参りました。
実際、ユーザはSQLServerを未だ業務で使っておらず
導入直後の症状であったため、
「動作が気持ちわるい」ということで、
SQLサーバの再インストールを試すことになりました。
再インストール後は、
メンテナンスプランで作成したバックアップに掛かる所要時間も、
だいぶ改善したため、様子を見ていただくことになりました。
万一、また症状が出た場合は、
アドバイス頂いたSQLプロファイラなど、活用してみたいと思います。
ありがとうございました。