IT用語集 › データベース › 行ロック

行ロック

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

テーブル全体ではなく、個々の行にかけるロック。現代のDBでは UPDATE や DELETE の標準的な動作で、100セッションが別々の行を同時に更新できる。

明示的には、SELECT ... FOR UPDATE が排他的な行ロック、SELECT ... FOR SHARE が共有ロックを取る。PostgreSQL の行ロックはタプルヘッダに記録され、競合時だけ重量級のロックテーブルが使われる。MySQL InnoDB の行ロックはインデックス経由なので、WHERE 条件にインデックスがない UPDATE は実質テーブルロックになる。ロックが増えすぎると行ロックをテーブルロックに格上げする(ロックエスカレーション)DBもあり、SQL Server がそうだ。PostgreSQL はやらない。SKIP LOCKED 句を使うと、SQL でキューを組める。PostgreSQL のジョブキューの定番パターンである。

← 用語集に戻る