リレーショナルデータベースの構造を理解することは、データベースを活用したアプリケーション開発や運用管理、チューニング手法等を習得するための基礎となります。
また、昨今リレーショナル データベース以外にもHadoopやDocument DB等の新しい発想のデータベースが提供されていますが、そのような新しいテクノロジーの特性やメリット・デメリットを理解するための土台となるリレーショナルデータベースの基礎を学んでいただければと思います。
本記事では、SQL Serverリレーショナルデータベースをインストールする際に、最低限理解しておく必要がある、基本的な構造についてご説明いたします。
インスタンスとデータベースの関係
SQL Serverではインスタンス(Windowsのサービス)とデータベースとの関係は、1:Nとなり、複数のデータベースで構成されています。また、OS上に複数のSQL Serverインスタンスを配置することも可能です。
データベース構成
インスタンスを構成するデータベースには、System DatabaseとUser Databaseの2つの要素で構成されています。
System Databaseはインスタンスレベルのメタデータ(インスタンスレベルの制御情報、ユーザー情報)や一時作業領域として利用されます。各システムテーブルの利用用途は下記表の様になります。
SQL Serverの特徴的な構成としては、masterデータベースがあります。
SQL Serverは、起動時に設定ファイルから起動パラメータ読み取るのでは無く、インスタンスレベルの各種パラメータ情報をmasterデータベースで管理しているため、メモリやプロセッサ設定、その他各種パラメータの多くがSQL Serverの稼働中に変更可能で、インスタンスの再起動が不要となっています。
msdbデータベースは、SQL Serverエージェントが使用するデータベースで、ジョブのスケジューリングや警告、オペレータ情報、その他にジョブ実行履歴やバックアップ履歴などが格納されます。ジョブ実行履歴やバックアップ履歴は累積されるため、放っておくとデータベースが肥大してしまうこともありますので、定期的なメンテナンスが必要です。
定期メンテナンスは、SQL Server Management Studioからメンテナンスプランを作成して[履歴のクリーンナップ]の設定を行うことで、定期メンテナンスジョブの作成が出来ます。
tempdbデータベースは、クエリ実行時の一時作業領域として利用されるだけではなく、最近のSQL Serverでは、スナップショット分離レベルのバージョンストアや、インデックスメンテナンス時の作業領域など、多く機能で利用されるために、性能面を考慮した最適な物理設計を行う必要があります。
SQL Server 2014以前では、SQL Serverのインストール後に、tempdbのベストプラクティスに則した構成変更を個別に行う必要がありましたが、SQL Server 2016ではインストール時にハードウェア構成を自動的に判断して、最適な構成でtempdbを構成することが出来るようになっています。
tempdb 複数ファイルグループの設定(SQL Server 2016新機能)
SQL Server 2016のセットアップ実行時に、tempdbのデータファイル数を環境に合わせて設定する(8または搭載CPUコア数の小さい値を既定値とする)
tempdbファイルグループ設定
User Database
User Databaseは、その名の通りユーザーのデータを格納するデータベースです。
データベース毎にデータファイルとログファイルを個別に管理していますので、バックアップやメンテナンス等の管理単位はデータベース単位となります。