データベースコミュニティにおいて,ロックとラッチは以下のように区別することが多い.

  • ロック (lock) は,データベースの内容を保護するために,トランザクション間の並行性制御で使われる.
  • ラッチ (latch) は,インメモリのデータ構造を保護するために,スレッド間の並行性制御で使われる.

具体的には,以下の表のようになる 1

  ロック ラッチ
分離する対象 トランザクション スレッド
保護する対象 データベースの内容 インメモリのデータ構造
保持される期間 トランザクションの実行中 クリティカルセクション
モード 共有,排他,インテンション等 読み取り,書き込み
デッドロックへの対処 待ちグラフ等を用いて検出し,アボート等により解決する アルゴリズムにより回避する
管理 ロックマネージャー 内部のデータ構造