連載
» 2004年09月25日 00時00分 公開

SQL Server 2000 チューニング全工程(2):動的ディスク管理でのチューニングポイント (1/3)

本連載ではSQL Server 2000のチューニングに関するノウハウを解説する。SQL Server 2000は自動チューニング機能を持つために、チューニングはあまり必要ないと思われがちだが、そのアーキテクチャを理解し適切にツール類を使用しなければ、本来のパフォーマンスを得られない。(編集局)

[沖要和,NRIラーニングネットワーク]

データベースの割り当てはデータとログを分離

 SQL Server のデータベースを構成する物理ファイルは、データファイルとログファイルの2種類があります。データファイルには、主にテーブル、インデックス、ビュー、ストアドプロシージャなどのデータベースオブジェクトが格納されます。ログファイルには、データベースの復旧に使用されるすべてのログ情報が保持されます。データベースには最低1つのデータファイルとログファイルが必要です。

 SQL Serverでは、Enterprise Managerを使用し、容易に新しいデータベースの作成が行えるのですが、データベース名を入力した後、ほかの設定を既定のままにした場合、データファイルとログファイルは、いずれもSQL Serverのインストールされたディスクに割り当てられます。基本事項なのですが、パフォーマンスと保守性を考慮した場合、データファイルとログファイルは物理的に分離された物理ディスクに作成すべきで、まずその理由から説明しておきます。

注)本文中で特に断らない限り、SQL Serverと表記した場合はバージョン2000を指す。また、次期バージョンとなるSQL Server 2005の情報については、適宜盛り込む予定だ。


 前回の記事「メモリの自動チューニング機能を完全に把握しよう」でSQL Serverのメモリプールを図説しましたが、メモリプールに置かれたデータの更新をディスクに書き出すタイミングを理解しておきます。SQL Serverは、バッファキャッシュに読み込まれたデータページが更新されても、すぐにはその内容をディスクに書き出すことをしません。ディスクへの書き込みは下記のタイミングで発生します。

  • トランザクションがコミットされると、保留されていたすべてのログレコードをログファイルに書き込む
  • チェックポイントが起動すると、ダーティページと保留されていたすべてのログレコードをデータファイルとログファイルに書き込む
  • 新たなデータページを保持するためにバッファキャッシュに空きを作成する必要がある場合
図1 ディスク書き込みのタイミング 図1 ディスク書き込みのタイミング

 ログレコードは、トランザクションがコミットされるタイミングで同期的に書き出されますが、データファイルは、チェックポイント時やバッファキャッシュの確保のタイミングで非同期に書き出されます。ディスク装置は、サーバの構成要素の中でも速度が遅い装置であるため、データへのアクセスは、なるべく速度の速いメモリ内で処理しつつ、障害に対しての保全性のために、確定した変更内容のみを先行してディスクに書き出す仕組みになっています。

 またログファイルは、データベースごとにシーケンシャルな書き込みがなされるのに対して、データファイルは、ランダムなディスク書き込みになります。このようにデータとログはディスクへ書き込むタイミングと方法が異なるため、物理的にディスクを分離することで、パフォーマンスを改善できます。

 また、データファイルの物理ディスクが壊れてしまった場合、最新のログ データを確保できれば、バックアップから復元されたデータファイルに、反映されていないトランザクションをログから適用することで、最新状態まで復旧することができます。このように保守性を考えても、物理的にディスクを分離することは重要ですし、さらに安全性を考えれば、ログファイルが保存されるディスクはミラー化しておく必要もあります。またデータファイルへのIOの分散化と障害時の停止時間を短縮するため、データファイルをRAID(Redundant Array of Independent Disks)5や予算が許せば、RAID10(1+0)に配置することをお勧めします。(次ページへ続く)

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。