製品情報

パン屑ナビゲーション

使い方入門

印刷ユーティリティ

データベースのパフォーマンス向上に不可欠な PowerX PerfectDisk 10 Pro 中級

膨大な情報を管理するためにはSQLデータベースは欠かせないものです。
今日、企業だけでなく、家庭内のパソコンにおいても膨大な情報が扱われるようになり、一般的に使用されているソフトウェアでも内部でSQLデータベースが組み込まれているものも多くなってきています。また、PowerXユーザーの中には、自宅にて自分でSQLデータベースを構築し、使用されている方もいらっしゃるかと思います。

そんな方に向けて、今回は『SQLデータベースの断片化』についてのお話です。

SQLデータベースファイルも断片化とは無縁ではありません。断片化が進行すると、SQLデータベースのパフォーマンスが落ちてきます。そのような場合、PowerX PerfectDisk 10 Proで断片化を解消することでパフォーマンスの回復を図ることができます。

SQLデータベースを使い込んでいるユーザーの方からは、

「使用しているSQLデータベースの開発元が、断片化を解消するためのコマンド・ツールを提供していますので、間に合ってます!」

という声が聞こえてきそうなのですが、実はそれ、間に合っていないんです。

どういうことか詳しくお話しますと、ひとことでデータベースのパフォーマンスを劣化させる「断片化」と言っていますが、実はこの「断片化」には2種類あるのです。

  • 内部断片化(データベースレベルの断片化)
  • 外部断片化(OSレベルのファイル断片化)

の二つです。

まず、内部断片化とは、レコードの削除をくりかえすことで、データベースファイルの内部に未使用の空白ができてしまい、データが飛び飛びになってしまうことです。使用しているSQLデータベースが断片化解消のためのコマンド・ツールを提供している場合、SQLデータベースは内部断片化の状態を把握し、治すことができます。例えば、Microsoft社製のSQLデータベースである、Microsoft SQL Server の場合、DBCC SHOWCONTIG や DBCC INDEXDEFRAG コマンドで、内部断片化の情報の表示、改善を行うことができます。つまり、SQLデータベースは内部断片化の状態を手に取るように知ることができるのです。

それに対して、外部断片化とは、データベースのファイルが物理的に飛び飛びにハードディスクに記録されている状態のことで、SQLデータベースはこの状態を把握することも治すこともできません。データベースファイル自体をハードディスク上に記録したのはOSであり、これはOSレベルでの出来事、つまりSQLデータベースは手出しができないことなのです。

 

ページtopへ

 

ここで話をまとめますと、断片化が原因で起こるデータベースのパフォーマンス劣化を改善するためにすることは2つ、

  1. 内部断片化を解消する
  2. 外部断片化を解消する

になります。どちらも断片化を解消する、ということになりますが、OSのファイルシステムも実際はデータベースだと思えば、理解しやすいかもしれません。

「1. 内部断片化を解消する」には、お使いのSQLデータベースのコマンド・ツールを使いましょう!これで、データーベースの断片化の論理的なところを解消できます。
さて、「2. 外部断片化を解消する」には・・・?

ここで、PowerX PerfectDisk 10 Pro です!
PerfectDiskはファイルの物理的な断片化を解消します。データベースファイルもOSからみれば単なるファイルなので、これによって外部断片化を解消することができます。
PowerX PerfectDisk 10 Pro はSQLデータベースのサービスを停止せずに、安全にデータベースファイルをデフラグします。もちろん、SQLデータベースは、OracleでもMicrosoft SQL Serverでも構いません。

では実際にPowerX PerfectDisk 10 Pro を使用して、弊社が販売しているサーバ監視ソフト「Server Supervisor」のデータベースファイルの外部断片化を解消してみましょう。ServerSupervisorはデータの管理用にSQLデータベース SQLite を組み込んで使用しています。

 

ページtopへ

 

  1. Server Supervisorがインストールされているボリューム(C:)を選択して、分析を開始します。
  2. 分析終了後、[分析結果]タブの"断片化率が高いファイル"を選択します。ここには断片化率が高いファイルの一覧が表示されます。Server Supervisorのデータベースファイル supervisor.db も外部断片化を起こしていることがわかります。
  3.  

    ページtopへ

     

  4. Server Supervisorがインストールされているボリューム(C:)を選択して、SMARTPlacementでデフラグを開始します。
  5. supervisor.db がデフラグされています。もちろんこの時も、Server Supervisorのサービス(SQLite データベースエンジン) を停止する必要はありません。
  6. デフラグ完了後、再度"断片化率が高いファイル"を表示します。一覧からsupervisor.dbが消えています。supervisor.db の外部断片化が解消されました。


    ※さらにPerfectDiskでは個別にファイルを指定しての最適化もできますので、ドライブ全体を対象とすると時間がかかりすぎる場合などには、データベースファイルのみ断片化を解消することもできます。

 

ページtopへ

 

では、外部断片化の解消によって、どれだけパフォーマンスが良くなったのでしょうか?デフラグ前とデフラグ後のパフォーマンスを測定してみました。測定方法は、Perlスクリプトよりデータベースファイルに対して一連のSQL問い合わせを10回繰り返し、デフラグの前後でその応答時間を比較するというものです。

3ヶ月間分のデータをため込んだ、約250MBのデータベースファイルを使用したところ、平均値が0.01秒、約2%改善されました。

今回の測定は、蓄積されたデータ量、ファイルサイズが、比較的小さいデータベースファイルを使用したものであり、また外部断片化がそれほど進んだ環境ではなかったにも関わらず、これだけの改善が確認されました。家庭や企業で実際に運用されているデータベースはより大きいものであるのが一般的であり、また外部断片化もより進んだ環境であることが多いと思われますので、今回の測定値よりさらに大きな改善が見込まれます。
この結果から、データベースのパフォーマンス向上には、外部断片化の解消が非常に有効であると言えると思います。

「1. 内部断片化を解消する」には、お使いのSQLデータベースのコマンド・ツールを使いましょう!
「2. 外部断片化を解消する」には、PowerX PerfectDisk 10 Pro を使いましょう!