IT用語集 › データベース › ロックエスカレーション

ロックエスカレーション

データベース Svenska → 更新: 2026-10-22

メモリを節約するために数千の行ロックを一つのテーブルロックへ置き換える。その代わり、同時実行性が一気に失われる。

ロックは管理するたびにメモリを消費する。トランザクションが細粒度の行ロックを一定数ためると、一部のデータベースはそれらを捨て、テーブル全体への粗いロックを取る。SQL Server では一つのオブジェクトに対して約5,000個が境目だ。管理は安上がりになるが、他のトランザクションへの影響は即座に現れる。

症状には特徴がある。あるデータ量を超えるまでは順調に動いていたジョブが、超えた途端に同時実行性が崩れ、タイムアウトが広がる。対処はエスカレーションを無効にすることではなく、大きな更新を小さなバッチに分けることだ。Postgres にはこの仕組み自体がない。MVCC のおかげで読み手が書き手にブロックされないため、ロック用メモリを節約する圧力が同じ形では生じないのだ。

← 用語集に戻る