更新:2024/12/23

ロック粒度とは?ゆるーくわかりやすく解説

はるか
はるか
ロック粒度。知ってる?
ふゅか
ふゅか
ロック粒度?あっ、データベースのアクセス制御の話ね!
はるか
はるか
そう。ロックの範囲を「粗い」とか「細かい」って言う。

1. ロック粒度の要点

ロック粒度とは

  • データベースにロックをかけること
  • ロックをかける範囲を細かい、粗いという表現をする。

2. ロック粒度とは?

ロック粒度(Lock Granularity)とは、データベースやコンピュータシステムにおいて、ロック(アクセス制限)を適用する際の単位や範囲のことを指します。

ロックは、複数のユーザーやプロセスが同時にデータを操作する場合に、データの一貫性や整合性を保つために必要です。

ふゅか
ふゅか
そもそもロック粒度って、なんで必要なの?
はるか
はるか
複数人が同時にデータ操作すると、意図しない挙動を起こす可能性がある。ロックして整合性を保つ。
ふゅか
ふゅか
あ~、データが混乱しないように守る仕組みなんだね!

2.1. 英語から推測すると

「Lock Granularity」を英語から推測すると、

  • Lock: 直訳すると「鍵」や「ロック」ですが、コンピュータ分野では「アクセス制御」や「同期」のための「ロック」を意味します。
  • Granularity: 「粒度」という意味で、物事をどれだけ細かく分割して管理するかを示します。

つまり、Lock Granularityは、「ロックをどの程度の細かさ(粒度)で管理するか」を指します。

3. ロック粒度の種類

ロック粒度とは、データベース内でどの範囲をロックするかという広さを指します。ロックの粒度が広いほど処理はシンプルになりますが、同時に複数の操作を行うことが難しくなることもあります。以下に、ロック粒度の主な種類とその特徴を詳しく説明します。

3.1. データベース全体

データベース全体を対象にロックをかける方法です。この方法では、データベース内のすべての操作を一時的に停止させ、競合を完全に防ぐことができます。

  • シンプルな実装
    データベース全体をロックするため、実装は非常に簡単で技術的な工夫はほとんど必要ありません。
  • 競合の防止
    他のプロセスが同時にデータを操作するリスクを完全に排除できるため、データの整合性を高いレベルで保証します。
  • 粗いロック粒度
    ロックの範囲が広いため、「粗いロック粒度」と呼ばれます。その反面、複数ユーザーによる同時アクセスや操作ができなくなるため、パフォーマンスが低下する可能性があります。

3.2. テーブル単位

特定のテーブル全体をロックする方法です。この場合、同じデータベース内であっても、ロックされたテーブル以外の操作は可能です。

  • 粒度
    データベース全体をロックするよりも細かく、行単位のロックよりは広い範囲を対象にしています。
  • 適度なパフォーマンス
    テーブルごとに操作を分けられるため、データベース全体のロックよりも効率的な処理が可能です。
  • 競合の一部防止
    特定のテーブルへの競合は防げますが、他のテーブルでの操作は影響を受けないため、柔軟性があります。

3.3. 行単位

テーブル内の特定の行に対してロックをかける方法です。データベースやテーブル全体をロックする必要がなく、最も粒度の細かいロックです。

  • 細かいロック粒度
    ロックの対象が非常に限定されているため、リソースの無駄を最小限に抑えられます。

4. ロック粒度の具体例

4.1. オンラインショッピングサイト

  • 多数のユーザーが同時に在庫状況を確認し、購入手続きを行います。
  • 行単位のロックを行う。個々の商品情報にだけロックをかけることで、他の商品の操作に影響を与えません。
PR