ロック方式
Locking
ろっくほうしき
同時実行制御(排他制御)の方式の一つで、トランザクションがデータにアクセスする前にロックを掛け、ほかのトランザクションの競合するアクセスを、ロックが解放されるまで待たせる方式。読取りに使う共有ロックと更新に使う専有ロックを使い分け、2相ロッキングプロトコルに従えば直列化可能性が保証される。待ち合いによるデッドロックは、検出して一方をロールバックするか、Wait-Die方式などで予防する。
Related
他の資格での定義
同時実行制御(排他制御)の方式の一つで、トランザクションがデータにアクセスする前にロックを掛け、ほかのトランザクションの競合するアクセスを、ロックが解放されるまで待たせる方式。読取りに使う共有ロックと更新に使う専有ロックを使い分ける。互いのロックの解放を待ち合うデッドロックが起きることがある。
トランザクションがデータにアクセスする前にロックを掛け、他のトランザクションが競合するアクセスをする場合はロックの解放まで待たせる同時実行制御の方式。読取り用の共有ロックと更新用の専有ロックを使い分け、2相ロッキングプロトコルに従えば直列化可能性が保証される。待ち合いによってデッドロックが起き得るので、検出や予防の仕組みを併用する。
同時実行制御の方式の一つで、トランザクションがデータにアクセスする前にロックを掛け、競合するアクセスをロックの解放まで待たせる方式。読取りに使う共有ロックと更新に使う専有ロックを使い分け、2相ロッキングプロトコルに従えば直列化可能性が保証される。待ち合いによってデッドロックが起き得るので、検出して一方をロールバックするか、Wait-Die方式などで予防する。
同時実行制御の方式の一つで、トランザクションがデータにアクセスする前にロックをかけ、他のトランザクションのアクセスを制限する方式。読取り用の共有ロックと、更新用の専有ロックがあり、ロックをかける範囲(ロック粒度)が細かいほど同時実行性は高まるが管理の負荷は増える。デッドロックへの対処が必要になる。
Past Exams
過去問での出題
過去問で 7 回出題(データベーススペシャリスト試験 7)
- 令和5年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問12(IPA の PDF を新しいタブで開きます)
- 令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA の PDF を新しいタブで開きます)
- 平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA の PDF を新しいタブで開きます)
- 平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問13(IPA の PDF を新しいタブで開きます)
- 平成27年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18選択肢(IPA の PDF を新しいタブで開きます)
- 平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問15(IPA の PDF を新しいタブで開きます)
- 平成22年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18選択肢(IPA の PDF を新しいタブで開きます)
出典: 独立行政法人情報処理推進機構(IPA)の過去問題。問題文は IPA のサイトの PDF で確認できます。「選択肢」は、問題文ではなく選択肢に出たものです。用語名で照合しているため、関係の薄い問題が含まれることがあります。
Related
関連キーワードの用語
データを読み取るときに掛けるロック。共有ロックが掛かっているデータには、他のトランザクションも共有ロックを掛けて同時に読めるが、更新のための専有ロックは解放されるまで掛けられない。読取りどうしは並行でき、読取りと更新は互いを待つことになる。
ロックを掛ける対象となるデータの単位。データベース全体、表、ページ、行などがある。粒度を細かくするほど同時に実行できるトランザクションは増えるが、管理するロックの数が増えて負荷が大きくなる。粗くすると管理は楽になるが、待ちが増えて同時実行性が下がる。
共有する資源の使用の可否を表す変数(セマフォ)を使って、複数の処理の排他制御や同期をとる方式。資源を使う前にセマフォの値を減らすP操作を行い、値が0なら空くまで待つ。使い終わったら値を増やすV操作を行い、待っている処理を再開させる。
データを更新するときに古い版を残し、複数の版を保持することで同時実行制御を行う方式。読取りを行うトランザクションは、開始時点などで確定していた版(スナップショット)を読むので、更新中のデータにロックを掛ける必要がなく、読取りと書込みが互いを待たせない。不要になった古い版を回収する処理が要り、スナップショット分離ではライトスキューのような異状を防げない。
データを更新するときに掛けるロック。排他ロックともいう。専有ロックが掛かっているデータには、他のトランザクションは共有ロックも専有ロックも掛けられず、解放されるまで読取りも更新も待たされる。
各トランザクションが、ロックを獲得するだけのロック拡張相と、解放するだけのロック縮小相の2つに分けてロックを扱う規約で、一度ロックを解放したら新たなロックは獲得しない。全トランザクションがこれに従えば直列化可能性が保証されるが、デッドロックは防げない。ロックをコミットまで保持する厳格な2相ロックにすると、他のトランザクションの未確定データを読む連鎖的な取消しも防げる。
