No.92 ロックの粒度に関する説明のうち,適切なものはどれか。
⭕️
❌
💾
🖊 | ☑️ |
⭕️ | [[ AnswerCalc[0] ]] % | A | [[ AnswerCalc[1] ]] |
ロックの粒度とは、データベース、表、物理的な入出力単位であるブロック、行といったロックをかける資源の単位をいいます。ロックの範囲が狭い(粒度が細かい)ほど資源の競合やロック解除の待ち時間が少なくなり、トランザクションの並列実行性が増します。しかし、粒度が細かくなるほど管理が煩雑になるのでCPUの負荷が増します。反対に粒度が大きいと、管理は楽になりますが、他のトランザクションのロック解除を待つことが多くなるためスループットは低下します。
- データを更新するときに,粒度を大きくすると,他のトランザクションの待ちが多くなり,全体のスループットが低下する。
正しい。粒度が大きいということはロックをかける範囲が広いということです。粒度が大きいと、その分だけ他のトランザクションのロック解除待ちが多くなるためスループットは低下します。 - 同一のデータを更新するトランザクション数が多いときに,粒度を大きくすると,同時実行できるトランザクション数が増える。
粒度を大きくするとトランザクションの並列実効性が低下します。すなわち、同時に実行できるトランザクション数は減ります。 - 表の全データを参照するときに,粒度を大きくすると,他のトランザクションのデータ参照を妨げないようにできる。
データを参照するときにかけるのは共有ロックになります。共有ロック中のデータは他のトランザクションから参照可能なので、粒度の大小にかかわらず他のトランザクションのデータ参照を妨げることはありません(※他のトランザクションのデータ更新は妨げます)。 - 粒度を大きくすると,含まれるデータ数が多くなるので,一つのトランザクションでかけるロックの個数が多くなる。
粒度を大きくすると1つのロックで広い範囲(例えば表全体など)を制限できるので、トランザクション当たりのロックの個数は小さな範囲のロックをたくさんかけるよりも減ります。
💾
✔️
[[ d.CommentTxt ]] |
< | > |
🥇 |