none
SQL Server 2008でのデータベースの再編成について RRS feed

  • 質問

  • 社内でSAPを構築中です。SQL2008を使っているのですが、疑問があるため質問します。

    ホストコンピュータなどでは、データベースのパフォーマンス向上やディスクの空き領域増加などを主な目的としてデータベースの再編成処理を定期的に実施しています。

    同じようなイメージで、SAPの構築ベンダーに「SQLではデータベースの再編成的なものはしなくて良いのでしょうか?」という質問をしたところ、「SQLサーバーが自動でやってくれると思います。」という回答が返ってきました。この"と思います。"というのがすごく気になっています。

    本当にそのような処理はする必要がないのでしょうか?当方SQLは無知であり、ご存じの方教えて頂けませんでしょうか?

    2010年9月17日 4:40

回答

  • すこし古いSAPなのですが、SAP アプリケーション側で用意されたジョブを定期的に実行していました。 SAPのベンダーは、もしかしたら、このジョブがあるから、自動的にメンテナンスされると言っていたのかもしれません。

    古いSAPでは、内部的に、DBCC DBREINDEX などのコマンドが実行されていたと思います。

    SQL Server の観点から言うと、インデックスの再編成、再構築、は自動的には行われません。統計情報については、自動更新が有効になっていれば、自動的に更新されます。また、データベースの圧縮の自動圧縮になっていれば、自動的に圧縮されますが、この設定を有効にすることは、個人的には推奨しないです。

    SQL Server だけではなく、 Oracle などの他のデータベースのおいても、インデックスのメンテナンスは、自動的に行われることはないと思います。

    そのため、定期的にインデックスのメンテナンスなどをしたい場合は、メンテナンスプラン、ジョブなどで設定を実施する必要があります。

    • 回答としてマーク アスノア 2010年9月22日 6:56
    2010年9月18日 1:09
  • 下記のページを一度ご覧下さい。
    SAP向けのDBであまり再構築行わない理由やデフラグについての考え方が記載されています。

    「SAP 向けの SQL Server のメンテナンスに関するベスト プラクティス トップ 10 - ホワイトペーパー(日本語)」
    http://sqlcat.com/whitepapers_japanese/archive/2008/10/18/sap-sql-server-10.aspx
    *米国SQL Server Customer Advisory Teamのページです。

    ところで、一般的な話であれば、SQLServerでも再構成や再構築を行います。
    ツールを使って閾値を定義すれば、自動的に実行してくれるようになります。

    「インデックスの最適化」
    http://technet.microsoft.com/ja-jp/library/ms190910.aspx

    「メンテナンス プラン ウィザード」
    http://msdn.microsoft.com/ja-jp/library/ms189036.aspx
    「[インデックスの再構成タスク] (メンテナンス プラン)」
    http://msdn.microsoft.com/ja-jp/library/ms189738.aspx

    • 回答としてマーク アスノア 2010年9月22日 6:55
    2010年9月17日 17:37

すべての返信

  • 下記のページを一度ご覧下さい。
    SAP向けのDBであまり再構築行わない理由やデフラグについての考え方が記載されています。

    「SAP 向けの SQL Server のメンテナンスに関するベスト プラクティス トップ 10 - ホワイトペーパー(日本語)」
    http://sqlcat.com/whitepapers_japanese/archive/2008/10/18/sap-sql-server-10.aspx
    *米国SQL Server Customer Advisory Teamのページです。

    ところで、一般的な話であれば、SQLServerでも再構成や再構築を行います。
    ツールを使って閾値を定義すれば、自動的に実行してくれるようになります。

    「インデックスの最適化」
    http://technet.microsoft.com/ja-jp/library/ms190910.aspx

    「メンテナンス プラン ウィザード」
    http://msdn.microsoft.com/ja-jp/library/ms189036.aspx
    「[インデックスの再構成タスク] (メンテナンス プラン)」
    http://msdn.microsoft.com/ja-jp/library/ms189738.aspx

    • 回答としてマーク アスノア 2010年9月22日 6:55
    2010年9月17日 17:37
  • すこし古いSAPなのですが、SAP アプリケーション側で用意されたジョブを定期的に実行していました。 SAPのベンダーは、もしかしたら、このジョブがあるから、自動的にメンテナンスされると言っていたのかもしれません。

    古いSAPでは、内部的に、DBCC DBREINDEX などのコマンドが実行されていたと思います。

    SQL Server の観点から言うと、インデックスの再編成、再構築、は自動的には行われません。統計情報については、自動更新が有効になっていれば、自動的に更新されます。また、データベースの圧縮の自動圧縮になっていれば、自動的に圧縮されますが、この設定を有効にすることは、個人的には推奨しないです。

    SQL Server だけではなく、 Oracle などの他のデータベースのおいても、インデックスのメンテナンスは、自動的に行われることはないと思います。

    そのため、定期的にインデックスのメンテナンスなどをしたい場合は、メンテナンスプラン、ジョブなどで設定を実施する必要があります。

    • 回答としてマーク アスノア 2010年9月22日 6:56
    2010年9月18日 1:09
  • Chukiさま

    情報ありがとうございます。

    言われているのは「最も重要なインデックスを再構築またはデフラグする」という項目の事でしょうか?

    私には「SAP向けのDBであまり再構築行わない理由」というより、色々と気を付けるべき点はあるが、再構築やデフラグをした方が良いと読めるのですが・・・

    頂いた情報をSQLに詳しいもの(もしくはベンダー)に投げて判断を仰ごうと思います。

    私がChuki様の言われていることを理解できていない可能性大ですので・・・

    2010年9月22日 6:54
  • NOBTA 様

    情報ありがとうございます。

    さっそくベンダーに確認したいと思います。やはり最適化を図るためには定期的な再編成・再構築が必要だということですね。

    2010年9月22日 6:55
  • >私には「SAP向けのDBであまり再構築行わない理由」というより、色々と気を付けるべき点はあるが、
    >再構築やデフラグをした方が良いと読めるのですが・・・

    私にも、一般的な用途より、SAPで利用する際には効果が限定的である、という主旨に取れましたが、
    また、するな、とは読めず、気をつけろと書いているように読めました。

    NOBTA様が回答されているように、SAPの手順書にしたがってインストールすると、自動実行するようなジョブが作られていたように思います。

    念のため、実際の設定がどのようになっているかのご確認をお願いします。
    チェックポイントは、紹介させていただいた文章の通りです。

    混乱させてしまい、大変申し訳ございませんでした。

    2010年9月22日 8:17
  • Chuki様

    ご丁寧にありがとうございます。

    さっそくベンダーに確認致します。

    2010年9月22日 23:13