ロック粒度

更新日:

用語解説

ロック粒度は、ロックによって排他制御するデータ範囲の大きさです。データベース、表、ページ、行などがあり、粒度を粗くするか細かくするかで並行性と管理負荷が変わります。

■ 試験で押さえるポイント

  • 表ロックのような粗い粒度はロック個数が少なく管理負荷も小さい一方、異なる行を処理するトランザクションまで待たせ、並行性を下げます。

  • 行ロックのような細かい粒度は異なる行を並行処理できますが、ロック表のメモリ、取得・解放処理、デッドロック検査などの負荷が増えます。

  • 多数の細粒度ロックを保持したとき、DBMSが表ロックなどへまとめるロックエスカレーションを行う場合があります。負荷は下がりますが競合範囲は広がります。

  • 階層的な粒度ではインテンションロックを上位へ置き、下位の行やページにS又はXロックがあることを示して、表全体ロックとの互換性を効率よく判定します。

■ 選択肢での判断ポイント

細粒度=高い並行性・大きい管理負荷、粗粒度=低い並行性・小さい管理負荷というトレードオフを選びます。粒度を小さくすれば常に性能が上がるわけではありません。

例: 100万行表で別々の顧客行を更新する処理は行ロックなら並行できます。表全体へXロックを取ると、一行しか更新しなくても他の全顧客更新が待ちます。

音声で聞く

同じ分野の用語