基本情報技術者 学習ページ|科目A・データベース
処理を安全に確定する
複数の処理を一まとまりとして扱う仕組みがトランザクションです。同時実行時の排他制御と、障害が起きた後の回復方法を関連付けて整理します。
ACID特性
トランザクションは、一連の処理を論理的な一つの単位として扱う仕組みです。代表的な性質をACID特性といい、原子性、一貫性、独立性、耐久性の四つで表します。
原子性は処理全体を全て実行するか全て取り消す性質、一貫性は制約を守った正しい状態を保つ性質です。独立性は同時実行の影響を抑え、耐久性はコミット済み結果を障害後も保持する性質です。
ACIDは原子性・一貫性・独立性・耐久性。
共有と専有ロック
複数のトランザクションが同じデータを同時に扱うと、更新の競合が起こることがあります。共有ロックは主に読取り時に使い、他の共有ロックとは共存できますが、同じ対象への専有ロックとは共存できません。
専有ロックは更新などのために使い、同じ対象への他の共有ロックや専有ロックを排除します。共有同士は同時に保持でき、専有が関わると競合するという組合せを基準に判断します。
共有同士は共存でき、専有ロックは他のロックと競合する。
デッドロック
デッドロックは、複数のトランザクションが互いに相手の保持するロックの解放を待ち続け、処理が進まなくなる状態です。例えばT1がデータAをロックしたままBを待ち、T2がBをロックしたままAを待つと循環待ちになります。
対策には、ロック取得順序を統一して循環待ちを避ける方法や、一定時間後に待ちを打ち切る方法があります。検出後は一方のトランザクションを取り消してロックを解放する方法もあります。
互いのロック解放を循環して待つ状態がデッドロック。
コミットと回復
コミットはトランザクションの更新を確定し、ロールバックは更新を取り消して開始前などの整合した状態へ戻す処理です。障害回復では、ログに記録した更新情報を利用して、未確定処理を取り消したり確定済み処理を再適用したりします。
バックアップから復元した後、ログを使って更新を前向きに再適用する処理がロールフォワードです。チェックポイントは回復時に調べる範囲を減らし、再開処理を効率化するために利用されます。
未確定はロールバック、確定済み更新の再適用はロールフォワード。
2相コミット
複数のデータベースにまたがる一つのトランザクションでは、一部だけ確定すると整合性が崩れます。2相コミットは、参加する各処理系が確定可能かを確認する段階と、全体を確定又は中止する段階に分けて制御します。
第1相では調整役が各参加者にコミット可能かを問い合わせます。全参加者が可能と応答した場合に第2相でコミットを指示し、一つでも不可能なら全体を中止します。複数拠点で確定結果をそろえるための仕組みです。
2相コミットは全参加者の可否を確認して一括で確定又は中止する。
本番の形で解いてみる
科目Aの形: 四肢択一(このページのために作った問題)
トランザクションのACID特性のうち、処理途中で障害が起きたときに、一連の更新を全て反映するか全て取り消す性質はどれか。
- 原子性
- 一貫性
- 独立性
- 耐久性
答えと解説を見る
正解: 原子性
原子性は、一連の処理を分割せず、全て成功させるか全て取り消す性質です。一貫性は制約を守ること、独立性は同時実行の影響を抑えること、耐久性は確定結果を保持することです。
まちがえやすい点: 障害後にも確定結果を保持する耐久性と、途中までの更新を残さない原子性を混同しない。
科目Aの形: 四肢択一(表を読む)(このページのために作った問題)
同じデータXに対するロックの状態が次のとおりである。T1が新たに専有ロックを要求したときの扱いとして、最も適切なものはどれか。
| トランザクション | 現在保持しているロック |
|---|---|
| T1 | Xの共有ロック |
| T2 | Xの共有ロック |
- T2の共有ロックが解放されるまでT1は専有ロックを取得できない
- 共有ロック同士が共存しているのでT1は直ちに専有ロックへ変更できる
- T1の共有ロックだけを解放すれば、T2が共有ロック中でも専有ロックを取得できる
- T2の共有ロックは専有ロックと共存できるので、T1はそのまま専有ロックを追加できる
答えと解説を見る
正解: T2の共有ロックが解放されるまでT1は専有ロックを取得できない
専有ロックは、同じ対象に他のトランザクションが共有ロックを保持している間は取得できません。T1自身の共有ロックがあっても、T2の共有ロックが残っているため、T1は待つ必要があります。
まちがえやすい点: 共有ロック同士が共存できることと、共有ロックと専有ロックが共存できることを混同しない。
科目Aの形: 四肢択一(このページのために作った問題)
データベースの媒体障害後、バックアップを戻した上で、障害発生前にコミット済みだった更新をログから再適用する処理はどれか。
- ロールフォワード
- ロールバック
- デッドロック検出
- 共有ロック
答えと解説を見る
正解: ロールフォワード
バックアップ復元後に、ログを使ってコミット済み更新を再適用する処理がロールフォワードです。ロールバックは未確定の更新などを取り消す処理です。
まちがえやすい点: 前向きに再適用するロールフォワードと、変更を取り消すロールバックを逆にしない。
基本情報の学習ページ
ほかの学習ページの一覧と、2択の用語カード(750語)は、基本情報技術者のページにあります。
基本情報技術者のページへ →このページの内容は、IPA「基本情報技術者試験 シラバス Ver.9.2」(2026年1月公表)と試験要綱Ver.5.6の範囲にもとづきます(2026年10月確認)。IPAは2027年度春ごろから新しい試験制度に移る予定です。