SQL Serverやデータベースに詳しくないインフラ管理者が、SQL Serverのインフラを構築するにあたり知っておきたい知識についてです。
SQL については全く知りませんが、データベースロジックやOSから見た構成について記述します。
現在、ディスクがボトルネックになっているSQL Serverを抱えています。
SQL Server自体のチューニングは出来ませんが、インフラ(ハードウェア・OS)面から協力したいと思い、SQL Serverの知識をまとめています。
SQL Serverの論理的な基本概念とデータベース用語
インフラ管理者としてデータベースを話すには、データベースの論理的な基本概念とデータベース用語を知る必要があります。
「データベース」とインフラ管理者が漠然と言っている言葉は、抽象的なアプリケーションを示していることが多いです。
正式には「データベース管理システム(DBMS)」と言います。
データベース管理システム(DBMS)には
・SQL Server
・Oracle
・My SQL
・PostgreSQL
などのアプリケーション製品があります。
データベース管理システム(DBMS)内では、「データベース」と言う言葉は別の意味・概念を示します。
上記図の「インスタンス」が、データベース管理システムのプログラムを使用した実行サービスにあたるでしょうか。
SQL Serverの場合は、Windows OS上の「サービス」を示します。
その各インスタンスに、「データベース」が存在しぶら下がっています。
SQL Serverはインスタンスに複数のデータベースを登録することが出来ます。
データベース自体は、印象の概念と多分同じで、データ(テーブルとか)の集まりになります。
データベース管理システムのインスタンスがデータベースを辞書を引くように引き、ユーザー要求に答えています。
SQL Serverのファイル構成
インスタンスはデータベース管理システムプログラムファイルを使用しているので、インストールアプリケーションのプログラムになります。
例えば、
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
内の実行ファイル(exeファイル)になります。
上記のプログラムをサービス登録し実行したものがインスタンスにあたります。
SQL Serverのデフォルトのインスタンスは
サービス名: SQL Server (MSSQLSERVER)
実行ファイル: "C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER
となります。(SQL Server 2005)
SQLを使用したいSQLクライアントは、上記の「SQL Server (MSSQLSERVER)」インスタンスにアクセスし、各データベースを使用します。
各データベースは拡張子MDF NDF LDFといったファイルで構成されています。
SQL Server データベースには 3 種類のファイルがあります。
- プライマリ データ ファイル(拡張子MDFファイル)
プライマリ データ ファイルはデータベースの開始点であり、データベース内の他のファイルを指し示します。
各データベースには 1 つのプライマリ データ ファイルがあります。
プライマリ データ ファイルに推奨されるファイル名拡張子は .mdf です。
- セカンダリ データ ファイル(拡張子NDFファイル)
セカンダリ データ ファイルは、プライマリ データ ファイル以外のすべてのデータ ファイルで構成されます。
データベースによっては、セカンダリ データ ファイルがない場合と、複数のセカンダリ データ ファイルがある場合があります。
セカンダリ データ ファイルに推奨されるファイル名拡張子は .ndf です。
- ログ ファイル(拡張子LDFファイル)
ログ ファイルには、データベースの復旧に使用するすべてのログ情報が格納されます。
1 つのデータベースには最低 1 つのログ ファイルが必要で、複数あってもかまいません。
ログ ファイルに推奨されるファイル名拡張子は .ldf です。
ログファイルは「トランザクションログファイル」と言われます。
SQL Server のシステムデータベース(ユーザーデータベースではなく、SQL Serverインスタンスを起動するためのデータベース)は、
- master データベース
- msdb データベース
- model データベース
があります。
これらのデータベースが存在しないと、SQL Serverのインスタンスサービスは正常に起動しません。
一時的使用用途として、tempdb データベースが存在します。
例えば以下のパスになります
C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data
トランザクションログとSQLバックアップ、復元モード
トランザクションログとSQLのバックアップは密接に関係します
適切に管理・運用しないと、トランザクションログでディスクがいっぱいになるといった問題が発生します。
トランザクションログへの書き込みは
データベースに書き込みがある時だけではなく、読み取りの場合にも(統計情報が書き換わる時に)トランザクションログに書き込みがある。
SQL Serverのチューニング・パフォーマンス最適化に向けてのファーストステップ
SQL Serverはディスクネックが問題になります。
上記までのSQL Serverの概念・物理構成を理解したら、以下のことが想像できます。
データベースファイル(MDFファイル、NDFファイル)
ランダムなリードやランダムなライトが発生します
トランザクションログ(LDFファイル)
シーケンシャルなライトになります。
tempdbデータベース
一時的な書き込みが発生します。
上記、異なるディスク動作のデータベースをハード的に別のディスクパーティションに分けることがファーストステップになります。
SQL Server エディション別機能比較、サポート可能な最大CPU数・最大メモリ制限
「2 GB を超える物理メモリを SQL Server が使用できるように設定する」ための知識として、
- 32 bit 版 Windows の「ユーザー モード アドレス空間」と「カーネル モード アドレス空間」
- boot.ini ファイルの「/3GB スイッチ」
- boot.ini ファイルの「/PAE スイッチ」
- SQL Server 2005 データベース エンジン の「awe enabled オプション」
が分かりやすく書いてあります。
要するに、SQL Serverの使用できるメモリ領域をWindows OS がサポートする最大メモリ容量と同一まで拡張することが出来ます。