ロックとは?ろっく
ロックとは、複数のトランザクションが同じデータを同時に更新して不整合が生じることを防ぐため、対象データへのアクセスを一時的に制限する仕組み。読取り用の共用ロック(Sロック)と更新用の専有ロック(Xロック)があり、S対Sだけが同時にかけられ、Xが絡む組合せはすべて待たされる。
最終更新:2026-10-07
この語が出る過去問を解く →背景
同時実行をやめて1件ずつ処理すれば不整合は起きないが、それでは多数の利用者をさばけない。性能のための同時実行と、正しさのための直列化という相反する要求を調停するのがロックで、2相ロッキングプロトコルは「必要なロックをかけ終えるまで一つも解放しない」という手順で直列化可能性を保証する。午前I(科目A-1)では、相反表(両立性)とデッドロックが定番の出題になる。
具体例
MySQLのInnoDBやPostgreSQLは行単位でロックを取り、SELECT ... FOR UPDATEで明示的に専有ロックをかけられる。座席予約で同じ席を二人が同時に押さえてしまわないのはこの仕組みによる。
試験での引っ掛け
相反表は「S対Sだけが可、Xが絡めばすべて不可」。またロック粒度を細かくすれば待ちは減るが管理のオーバヘッドが増え、粗くすればその逆になるので、「細かくすれば常に速い」は誤り。デッドロックは、ロックを取る順序を全トランザクションで揃えることで避ける。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成29年度 春期 高度試験 午前Ⅰ 問8(IPA)
トランザクションAとBが,共通の資源であるテーブルaとbを表に示すように更新するとき,デッドロックとなるのはどの時点か。ここで,表中の①〜⑧は処理の実行順序を示…
正解:⑥
要点:デッドロックは互いの資源を待つ循環待ちが成立した時点で発生
Aは③でテーブルaを、Bは④でテーブルbをロックする。⑤でAがテーブルbを更新しようとするがBが保持しているため待たされ、続く⑥でBがテーブルaを更新しようとするとAが保持しているため待たされる。互いに相手のロック解放を待つ状態が成立するのは⑥の時点である。
出典:平成30年度 秋期 高度試験 午前Ⅰ 問10(IPA)解説で登場
データベースシステムにおいて、二つのプログラムが同一データへのアクセス要求を行うとき、後続プログラムのアクセス要求に対する並行実行の可否の組合せのうち、適切なも…
正解:後続共用×先行共用=○、後続共用×先行排他=×、後続排他×先行共用=×、後続排他×先行排他=×
要点:共用ロック同士だけ並行可、排他が絡めば必ず待ち
データベースのロックでは、共用(共有)ロックは読取り同士なので複数のプログラムが同時にかけられるが、排他ロックは更新のためのもので、他のどのロックとも両立しない。したがって「先行も後続も共用」の組合せだけが並行実行可能で、どちらかに排他が含まれる残り3通りは待たされることになる。
出典:平成30年度 秋期 高度試験 午前Ⅰ 問14(IPA)解説で登場
ブルートフォース攻撃に該当するものはどれか。
正解:使用可能な文字のあらゆる組合せをそれぞれパスワードとして、繰り返しログインを試みる。
要点:ブルートフォース攻撃は文字の組合せの総当たり
ブルートフォース攻撃(総当たり攻撃)は、パスワードとして考えられる文字の組合せをしらみつぶしに試し、ログインの成功を狙う攻撃である。対策としてはアカウントロックや長く複雑なパスワードの強制、多要素認証などが有効である。
出典・参考
公式シラバスの3 技術要素 > 1. データベース方式 > (2) データベース管理システムに掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。