平成30年秋期試験問題 午前問29
問29解説へ
ロックの粒度に関する説明のうち,適切なものはどれか。
- データを更新するときに,粒度を大きくすると,他のトランザクションの待ちが多くなり,全体のスループットが低下する。
- 同一のデータを更新するトランザクション数が多いときに,粒度を大きくすると,同時実行できるトランザクション数が増える。
- 表の全データを参照するときに,粒度を大きくすると,他のトランザクションのデータ参照を妨げないようにできる。
- 粒度を大きくすると,含まれるデータ数が多くなるので,一つのトランザクションでかけるロックの個数が多くなる。
正解 ア問題へ
広告
解説
ロックの粒度とは、データベース、表、物理的な入出力単位であるブロック、行といったロックをかける資源の単位をいいます。ロックの範囲が狭い(粒度が細かい)ほど資源の競合やロック解除の待ち時間が少なくなり、トランザクションの並列実行性が増します。しかし、粒度が細かくなるほど管理が煩雑になるのでCPUの負荷が増します。反対に粒度が大きいと、管理は楽になりますが、他のトランザクションのロック解除を待つことが多くなるためスループットは低下します。
- 正しい。粒度が大きいということはロックをかける範囲が広いということです。粒度が大きいと、その分だけ他のトランザクションのロック解除待ちが多くなるためスループットは低下します。
- 粒度を大きくするとトランザクションの並列実効性が低下します。すなわち、同時に実行できるトランザクション数は減ります。
- データを参照するときにかけるのは共有ロックになります。共有ロック中のデータは他のトランザクションから参照可能なので、粒度の大小にかかわらず他のトランザクションのデータ参照を妨げることはありません(※他のトランザクションのデータ更新は妨げます)。
- 粒度を大きくすると1つのロックで広い範囲(例えば表全体など)を制限できるので、トランザクション当たりのロックの個数は小さな範囲のロックをたくさんかけるよりも減ります。
広告