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


はるか
ロック粒度。知ってる?

ふゅか
ロック粒度?あっ、データベースのアクセス制御の話ね!

はるか
そう。ロックの範囲を「粗い」とか「細かい」って言う。
目次
1. ロック粒度の要点
ロック粒度とは
- データベースにロックをかけること
- ロックをかける範囲を細かい、粗いという表現をする。
2. ロック粒度とは?
ロック粒度(Lock Granularity)とは、データベースやコンピュータシステムにおいて、ロック(アクセス制限)を適用する際の単位や範囲のことを指します。
ロックは、複数のユーザーやプロセスが同時にデータを操作する場合に、データの一貫性や整合性を保つために必要です。

ふゅか
そもそもロック粒度って、なんで必要なの?

はるか
複数人が同時にデータ操作すると、意図しない挙動を起こす可能性がある。ロックして整合性を保つ。

ふゅか
あ~、データが混乱しないように守る仕組みなんだね!
2.1. 英語から推測すると
「Lock Granularity」を英語から推測すると、
- Lock: 直訳すると「鍵」や「ロック」ですが、コンピュータ分野では「アクセス制御」や「同期」のための「ロック」を意味します。
- Granularity: 「粒度」という意味で、物事をどれだけ細かく分割して管理するかを示します。
つまり、Lock Granularityは、「ロックをどの程度の細かさ(粒度)で管理するか」を指します。
3. ロック粒度の種類
ロック粒度とは、データベース内でどの範囲をロックするかという広さを指します。ロックの粒度が広いほど処理はシンプルになりますが、同時に複数の操作を行うことが難しくなることもあります。以下に、ロック粒度の主な種類とその特徴を詳しく説明します。
3.1. データベース全体
データベース全体を対象にロックをかける方法です。この方法では、データベース内のすべての操作を一時的に停止させ、競合を完全に防ぐことができます。
- シンプルな実装
データベース全体をロックするため、実装は非常に簡単で技術的な工夫はほとんど必要ありません。 - 競合の防止
他のプロセスが同時にデータを操作するリスクを完全に排除できるため、データの整合性を高いレベルで保証します。 - 粗いロック粒度
ロックの範囲が広いため、「粗いロック粒度」と呼ばれます。その反面、複数ユーザーによる同時アクセスや操作ができなくなるため、パフォーマンスが低下する可能性があります。
3.2. テーブル単位
特定のテーブル全体をロックする方法です。この場合、同じデータベース内であっても、ロックされたテーブル以外の操作は可能です。
- 粒度
データベース全体をロックするよりも細かく、行単位のロックよりは広い範囲を対象にしています。 - 適度なパフォーマンス
テーブルごとに操作を分けられるため、データベース全体のロックよりも効率的な処理が可能です。 - 競合の一部防止
特定のテーブルへの競合は防げますが、他のテーブルでの操作は影響を受けないため、柔軟性があります。
3.3. 行単位
テーブル内の特定の行に対してロックをかける方法です。データベースやテーブル全体をロックする必要がなく、最も粒度の細かいロックです。
- 細かいロック粒度
ロックの対象が非常に限定されているため、リソースの無駄を最小限に抑えられます。
4. ロック粒度の具体例
4.1. オンラインショッピングサイト
- 多数のユーザーが同時に在庫状況を確認し、購入手続きを行います。
- 行単位のロックを行う。個々の商品情報にだけロックをかけることで、他の商品の操作に影響を与えません。
PR