問題 No.2297
データベースのトランザクション管理において、複数のトランザクションが互いに相手が占有しているデータの解放を待ち合わせることで、処理が永久に進行しなくなる現象を表す用語はどれか。
【正解の解説】
デッドロック
これは狭い一本道で二人の人がお互いに「先に通ってください」と譲り合い、一歩も動けなくなってしまう状態に例えられます。データベースの世界でも、自分が握っているデータを相手が欲しがり、相手が握っているデータを自分も欲しがることで、誰も手を離さず完全に行き詰まってしまう致命的な膠着状態を指します。
スポンサーリンク
【その他の選択肢の解説】
ロールバック
これはゲームでセーブポイントからやり直す「ロード」のような機能です。デッドロックは「お見合い状態でフリーズする現象」ですが、ロールバックは「失敗した処理を白紙に戻す操作」という全く異なる概念です。初学者はデータベース用語として一緒に覚えがちですが、目的が違うので混同に注意しましょう。
ライブロック
デッドロックが完全に「フリーズ」する状態であるのに対し、ライブロックは廊下ですれ違う2人が「右にどうぞ」「左にどうぞ」とお互いに避ける動作を延々と繰り返し、一向に目的地にたどり着けない状態に似ています。動いているけれど仕事が進まない点がデッドロックとの決定的な違いです。
カスケード
これはドミノ倒しのように、ひとつの出来事をきっかけに次々と影響が連鎖していく様子を指します。データベースの異常終了時のロールバックが連鎖する「カスケードロールバック」などで使われますが、互いにデータを待ち合ってフリーズするデッドロックとは意味が全く異なります。