マナビング基本情報技術者

ロックの粒度で競合と管理用メモリはどう変わるか

基本情報技術者試験 平成30年度春期 午前 問30 / データベース › トランザクション処理

過去問にチャレンジ

平成30年度春期 午前 問30

RDBMSのロックの粒度に関する次の記述において,a,bの組合せとして適切なものはどれか。 並行に処理される二つのトランザクションがそれぞれ一つの表内の複数の行を更新する。行単位のロックを使用する場合と表単位のロックを使用する場合とを比べると,ロックの競合がより起こりやすいのは[a]単位のロックを使用する場合である。また,トランザクション実行中にロックを管理するためのRDBMSのメモリ使用領域がより多く必要になるのは[b]単位のロックを使用する場合である。

平成30年度春期 午前 問30の図
  1. ア

    行 行

  2. イ

    a:行,b:表

  3. ウ

    表 行

  4. エ

    表 表

会話形式の解説

講師講師
この問題は、ロックの粒度、つまり一度に保護する範囲を比べます。競合と管理用メモリを分けて考えましょう。
受験者受験者
細かく行ごとにロックする方が、競合も増えるように感じます。
講師講師
競合については、二つの処理が別々の行を更新する場合を考えてみてください。表全体をロックすると、どうなりますか。
受験者受験者
更新する行が違っても、同じ表のロックを取り合います。競合しやすいのは表単位ですね。
講師講師
そのとおりです。では、複数の行を更新するとき、管理するロックの数が増えるのはどちらでしょうか。
受験者受験者
行単位です。行ごとにロックを管理するので、管理用メモリも多く必要になります。
講師講師
これで空欄は競合が表単位、メモリが行単位と決まります。図表では「表・行」の組合せが正解のウです。
受験者受験者
「行・行」はメモリの方だけ合っていますが、競合しやすい方を行単位としているので違いますね。
講師講師
はい。「行・表」は競合とメモリの両方を逆にしています。
受験者受験者
「表・表」は競合の方だけ合っていて、管理用メモリの方が違います。
講師講師
その理解で合っています。ロックする範囲が広いと競合しやすく、複数の行を個別にロックすると管理する数が増える、と分けて判断します。

まとめ

ロックの粒度は、一度のロックで保護するデータの範囲です。表単位のロックは対象が広く、行単位より競合しやすくなります。複数の行を個別にロックすると管理する数が増え、管理用メモリをより多く使います。したがって「表・行」の組合せが正解です。

解答・解説

正解はウです

この問題のテーマ

RDBMSのロックの粒度によって、更新時の競合とロック管理用メモリがどう変わるかを問う問題です。

解き方の考え方

まず、ロックが及ぶ範囲を比べます。表単位では、別々の行を更新する場合でも同じ表のロックを取り合うため、aは「表」です。一方、複数の行を行単位でロックすると管理するロックが増えるため、bは「行」です。図表でこの組合せに当たるのはウです。

選択肢ごとの解説

  1. ×ア  行 行
    アはa、bともに「行」です。管理用メモリについてのbは合っていますが、競合しやすい方を行単位とするaが違います。
  2. ×イ  a:行,b:表
    イはaが「行」、bが「表」です。ロックの範囲と管理する数の両方について、当てはめ方が逆です。
  3. ○ウ  表 行
    ウはaが「表」、bが「行」です。表全体をロックする場合は競合しやすく、複数行を個別にロックする場合は管理用メモリが多く必要になるので、両方の条件を満たします。
  4. ×エ  表 表
    エはa、bともに「表」です。競合についてのaは合っていますが、管理用メモリが多い方を表単位とするbが違います。

POINT

  • ロックの粒度とは、一度のロックで保護するデータの範囲です。
  • 表単位のロックは対象が広いため、行単位より競合しやすくなります。
  • 行単位のロックは対象が細かい分、複数行の更新では管理するロックが増え、管理用メモリを多く使います。

※出典:平成30年度春期 基本情報技術者試験 午前 問30(一部改変)