本連載ではSQL Server 2000のチューニングに関するノウハウを解説する。SQL Server 2000は自動チューニング機能を持つために、チューニングはあまり必要ないと思われがちだが、そのアーキテクチャを理解し適切にツール類を使用しなければ、本来のパフォーマンスを得られない。(編集局)
SQL Server注 のデータベースを構成する物理ファイルは、データファイルとログファイルの2種類があります。データファイルには、主にテーブル、インデックス、ビュー、ストアドプロシージャなどのデータベースオブジェクトが格納されます。ログファイルには、データベースの復旧に使用されるすべてのログ情報が保持されます。データベースには最低1つのデータファイルとログファイルが必要です。
SQL Serverでは、Enterprise Managerを使用し、容易に新しいデータベースの作成が行えるのですが、データベース名を入力した後、ほかの設定を既定のままにした場合、データファイルとログファイルは、いずれもSQL Serverのインストールされたディスクに割り当てられます。基本事項なのですが、パフォーマンスと保守性を考慮した場合、データファイルとログファイルは物理的に分離された物理ディスクに作成すべきで、まずその理由から説明しておきます。
注)本文中で特に断らない限り、SQL Serverと表記した場合はバージョン2000を指す。また、次期バージョンとなるSQL Server 2005の情報については、適宜盛り込む予定だ。
前回の記事「メモリの自動チューニング機能を完全に把握しよう」でSQL Serverのメモリプールを図説しましたが、メモリプールに置かれたデータの更新をディスクに書き出すタイミングを理解しておきます。SQL Serverは、バッファキャッシュに読み込まれたデータページが更新されても、すぐにはその内容をディスクに書き出すことをしません。ディスクへの書き込みは下記のタイミングで発生します。
ログレコードは、トランザクションがコミットされるタイミングで同期的に書き出されますが、データファイルは、チェックポイント時やバッファキャッシュの確保のタイミングで非同期に書き出されます。ディスク装置は、サーバの構成要素の中でも速度が遅い装置であるため、データへのアクセスは、なるべく速度の速いメモリ内で処理しつつ、障害に対しての保全性のために、確定した変更内容のみを先行してディスクに書き出す仕組みになっています。
またログファイルは、データベースごとにシーケンシャルな書き込みがなされるのに対して、データファイルは、ランダムなディスク書き込みになります。このようにデータとログはディスクへ書き込むタイミングと方法が異なるため、物理的にディスクを分離することで、パフォーマンスを改善できます。
また、データファイルの物理ディスクが壊れてしまった場合、最新のログ データを確保できれば、バックアップから復元されたデータファイルに、反映されていないトランザクションをログから適用することで、最新状態まで復旧することができます。このように保守性を考えても、物理的にディスクを分離することは重要ですし、さらに安全性を考えれば、ログファイルが保存されるディスクはミラー化しておく必要もあります。またデータファイルへのIOの分散化と障害時の停止時間を短縮するため、データファイルをRAID(Redundant Array of Independent Disks)5や予算が許せば、RAID10(1+0)に配置することをお勧めします。(次ページへ続く)
Copyright © ITmedia, Inc. All Rights Reserved.