同時実行制御(ロック)とは?デッドロック

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

同時実行制御とは(全体像)

同時実行制御とは、複数の処理(トランザクション)を同時に動かしても、データが矛盾(不整合)しないようにするしくみのことだ。

たとえば、2人が同時に同じデータを書きかえようとすると、おかしなことになる。それを防ぐのが、ロックだ。データを使う間、他の処理が勝手にいじれないように、鍵をかけるイメージ。

ロックには、2種類ある。

図書館の本でたとえると分かりやすい。読むだけ(共有ロック)なら、何人でも同時に見られる。でも、書きこむ(排他ロック)なら、一人だけ

ここで一番のポイント。ロックは、すべてが排他(単独)なわけではない。「ロックは、いつも1つだけしかかけられない」と思い込むと誤りで、共有ロックは複数で同時にかけられる


詳しく:デッドロック

ここが心臓部。ポイントを表で押さえよう。

同時実行制御のポイント

項目やさしい意味
共有ロック読み取り用。複数で同時にかけられる
排他ロック書き込み用。1つだけ(単独)
デッドロック互いに相手のロックを待ち合って、両方が止まる
対処DBMSが検出して、自動で解除できる

注意したいのが、デッドロック。これは、2つの処理が、互いに相手のロックを待ち合って、両方とも動けなくなる状態だ。

ここで一番のポイント。デッドロックは、避けられないものではない。「デッドロックが起きたら、もうどうにもならない」と思い込むと誤りで、DBMSがデッドロックを検出して、自動で解除できる(どちらかの処理を取り消すなど)。

わかりやすく言い換えると

身近なたとえで整理しよう。

同時実行制御は、「複数の処理を同時に動かしても、データが矛盾しないようにするしくみ」のイメージ。ロックで、勝手に書きかえられないようにする。

ロックの2種類は、「読むだけの共有ロック(何人でも同時に可)、書きこむ排他ロック(一人だけ)」こと。要するに、読みは共有、書きは独占。

デッドロックは、「互いに相手のロックを待ち合って、両方が止まる状態。DBMSが検出して自動で解除できる」こと。つまり、対処できる。


試験のツボ

🔴 一番出る:ロックの2種類

①共有ロック=読み取り用、複数で同時にかけられる

②排他ロック=書き込み用、1つだけ(単独)

🔴 次に出る:同時実行制御の目的

①複数の処理を同時に動かしても、データが矛盾しないようにする

②ロックで、勝手に書きかえられないようにする

🟡 押さえると安定:デッドロック

①互いに相手のロックを待ち合って、両方が止まる状態

②DBMSが検出して、自動で解除できる(対処できる)


よくある間違い

「ロックは、いつも1つだけしかかけられない(すべて排他)」→ ✗  共有ロック(読み取り用)は、複数で同時にかけられる。

「デッドロックが起きたら、もうどうにもならない」→ ✗  DBMSがデッドロックを検出して、自動で解除できる。

「同時実行制御は、処理を1つずつしか動かせなくするものだ」→ ✗  複数の処理を同時に動かしても、データが矛盾しないようにするしくみ。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(同時実行制御の正体)

📝 オリジナル問題 1 同時実行制御の正体

同時実行制御に関する次の記述のうち、最も適切なものはどれか。

  1. 社員の出退勤を記録して、毎月の給与を計算するためのしくみだ
  2. 複数の処理を同時に動かしても、データが矛盾しないようにする
  3. 取引先へ毎月の請求書を郵送する、決まった事務作業のことを指す
  4. 完成したシステムを宣伝して、より多く売るための広告活動である
エーアイコアラ
エーアイコアラ 解答・解説

解答は 2 です。

同時実行制御は、複数の処理を同時に動かしても、データが矛盾しないようにするしくみなのです。ロックで勝手に書きかえられないようにするなります。

選択肢1は給与計算、選択肢3は請求書の事務、選択肢4は広告で、どれも違うのです。

選択肢判定理由
1給与計算のしくみではない
2同時でもデータが矛盾しないようにするで正しい
3請求書の事務の話
4広告活動ではない

オリジナル問題2(ロックの種類)

📝 オリジナル問題 2 ロックの種類

ロックの種類に関する次の記述のうち、最も適切なものはどれか。

  1. 社員の給与を計算するときだけ、ロックがかかるとされているものだ
  2. 取引先への請求書の枚数しだいで、ロックが決まるとされているのだ
  3. ロックは、いつも1つだけしかかけられないものなのである
  4. 共有ロックは読み取り用で複数可、排他ロックは書き込み用で単独
エーアイコアラ
エーアイコアラ 解答・解説

解答は 4 です。

ロックは、共有ロックは読み取り用で複数可、排他ロックは書き込み用で単独なのです。読むだけなら何人でも、書きこむなら一人だけなります。

選択肢1の給与、選択肢2の請求書、選択肢3の「いつも1つだけ」は、いずれも違うのです。

選択肢判定理由
1給与計算でかかるのではない
2請求書の枚数で決まるのではない
3共有ロックは複数可
4共有=読み複数可・排他=書き単独で正しい

オリジナル問題3(デッドロック)

📝 オリジナル問題 3 デッドロック

デッドロックに関する次の記述のうち、最も適切なものはどれか。

  1. 互いに相手のロックを待ち合って止まるが、DBMSが解除できる
  2. 社員の給与を計算するときだけ、起こるとされているものである
  3. 取引先へ請求書を郵送するときだけ、起こるとされているのである
  4. 一度起きたら、もうどうにもならないものだとされているのである
エーアイコアラ
エーアイコアラ 解答・解説

解答は 1 です。

デッドロックは、互いに相手のロックを待ち合って止まるが、DBMSが解除できるのです。検出して自動で解除できるので、対処できるなります。

選択肢2の給与、選択肢3の請求書、選択肢4の「どうにもならない」は、いずれも違うのです。

選択肢判定理由
1待ち合って止まるがDBMSが解除できるで正しい
2給与計算で起こるのではない
3請求書のときだけではない
4DBMSが検出・解除できる

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る