どのリカバリモデルを選ぶ?SQL ServerのSIMPLE・FULL・BULK_LOGGEDの違いと選定ポイント
SQL Serverでは、データベースごとにリカバリモデル(Recovery Model)を設定できます。
リカバリモデルは、トランザクションログの扱いやバックアップ戦略に直結する重要な設定です。
誤ったモデルを選ぶと、ログ肥大化や復元不可といったトラブルの原因になります。
この記事では、SIMPLE・FULL・BULK_LOGGEDの3つのリカバリモデルの特徴と、実務での選び方をわかりやすく解説します。
目次
リカバリモデルとは?
バックアップとトランザクションログの関係を制御する設定
SQL Serverでは、すべての更新処理がトランザクションログに記録されます。
リカバリモデルは、このログをどのように保持・削除・バックアップするかを制御する仕組みです。
つまり、どのリカバリモデルを選ぶかによって:
- どの時点まで復元できるか(復旧ポイント)
- ログファイルのサイズ増加
- 必要なバックアップの種類
3種類のリカバリモデルの概要
比較表
| モデル | トランザクションログ保持 | ログバックアップ | 復旧可能範囲 | 主な用途 |
|---|---|---|---|---|
| SIMPLE | 自動的に切り捨て | 不可 | 最後の完全・差分バックアップまで | 開発環境・一時DB・検証用 |
| FULL | 保持(バックアップで消化) | 可能 | 任意時点まで(Point-in-Time) | 本番・重要データベース |
| BULK_LOGGED | ほぼFULLと同様 | 可能 | 特定時点まで(制約あり) | 大量データ一括処理時 |
最も一般的なのはFULLモデルで、本番環境ではこれが標準です。
SIMPLEモデルの特徴と使いどころ
特徴
- トランザクションログは自動的に切り捨てられる
- ログバックアップが不要
- その分、障害時に復元できるのは「最後のバックアップ時点」まで
適したシーン
- 開発・検証環境(データ消失のリスクが低い)
- 一時テーブルを多用するバッチ処理用DB
- ログ肥大を防ぎたい軽量なDB
実務では、運用中のシステムではほとんど使われませんが、バックアップ容量を節約したい非本番環境では有効です。
FULLモデルの特徴と使いどころ
特徴
- トランザクションログをすべて保持(バックアップで消化)
- ログバックアップを組み合わせることで任意の時点まで復元可能
- 障害復旧・監査対応など、企業システムに最適
適したシーン
- 本番環境(顧客・販売・会計などの重要データ)
- 高可用性構成(AlwaysOn/ミラーリング)
- 24時間稼働システムでの障害対応
ただし、ログバックアップを定期的に取得しないと、ログファイルが肥大化する点に注意が必要です。
BULK_LOGGEDモデルの特徴と使いどころ
特徴
- FULLと似ているが、大量データ操作(BULK INSERTなど)のログを最小化
- ログバックアップは可能だが、ポイントインタイムリカバリは不可
- 性能重視の一時的な切り替えに向く
適したシーン
- ETL処理や大量データ移行時
- インデックス再構築など、一括操作を行うタイミング
一時的にBULK_LOGGEDに変更して処理を高速化し、完了後にFULLに戻す、という運用が一般的です。
リカバリモデルの確認と変更方法
モデルの確認
SELECT name, recovery_model_desc
FROM sys.databases;
モデルの変更
ALTER DATABASE SalesDB SET RECOVERY FULL; -- FULLに変更
ALTER DATABASE TestDB SET RECOVERY SIMPLE; -- SIMPLEに変更
ALTER DATABASE ETLDB SET RECOVERY BULK_LOGGED; -- BULK_LOGGEDに変更
変更はオンラインで即時反映されますが、適用中のバックアップ戦略を見直す必要があります。
実務での選び方と運用上の注意
選定基準
| 要件 | 推奨モデル |
|---|---|
| データ損失を最小化したい | FULL |
| 高速な大量処理を優先したい | BULK_LOGGED |
| 軽量なテスト環境で復旧不要 | SIMPLE |
運用上の注意点
- FULLモデルではログバックアップを定期的に実施
- ログファイル肥大化を防ぐには、バックアップ後にログを切り詰める
- 復旧要件に応じてモデルを適切に切り替える(例:バッチ時BULK_LOGGED)
まとめと次のステップ
学んだ内容の整理
- リカバリモデルはトランザクションログの扱いを制御する設定。
- SIMPLE・FULL・BULK_LOGGEDの3種類があり、復旧範囲とログ管理方法が異なる。
- 本番ではFULLが基本、処理負荷時は一時的にBULK_LOGGEDも検討。
- モデル変更後はバックアップ戦略の見直しが必須。
SQL Server学習シリーズ
参考リンク

0 件のコメント:
コメントを投稿