ロック粒度
Lock Granularity
ろっくりゅうど
Related
他の資格での定義
ロックをかける対象の大きさ。表単位、ページ単位、行単位などがある。粒度を細かくすると同時に実行できる処理は増えるが、管理するロックの数が増えて処理の負担が大きくなる。
ロックを掛ける対象となるデータの単位。データベース全体、表、ページ、行などがある。粒度を細かくするほど同時に実行できるトランザクションは増えるが、管理するロックの数が増えて負荷が大きくなる。粗くすると管理は楽になるが、待ちが増えて同時実行性が下がる。
ロックを掛けるデータの単位の大きさ。行、ページ(ブロック)、表、データベース全体などの段階がある。粒度を細かくするほど同時に実行できるトランザクションが増えるが、管理するロックの数とその処理の負荷が増え、逆に粗くすると負荷は減るが待ちが増えるので、処理の性質に合わせて選ぶ。
Related
関連キーワードの用語
トランザクションがデータにアクセスする前に、他のトランザクションのアクセスを制限するための仕組み。共有ロック(読取り用)と占有ロック(更新用)がある。
トランザクション実行中はロックを取得せず、コミット前に競合が発生していないか検証する方式。読取り→検証→書込みの3フェーズで処理する。競合が少ない環境で高いスループットを実現する。
2つ以上のトランザクションが互いに相手のロック解放を待ち合い、処理が永久に進まなくなる状態。待ちグラフによる検出や、タイムアウトによる検出を行い、一方のトランザクションをアボートして解消する。
ロック待ちの最大許容時間。指定時間内にロックが取得できない場合、トランザクションをエラーとして中断する仕組み。デッドロックの間接的な検出手段としても機能する。待ちグラフによる検出より実装が簡単だが、正常な待ちも中断する可能性がある。
データの読取り時に取得するロック。同一データに対して複数のトランザクションが同時に共有ロックを取得でき、他の共有ロックとは共存するが、占有ロックとは排他的である。
データの更新(INSERT、UPDATE、DELETE)時に取得するロック。同一データに対して他のいかなるロック(共有・占有)とも排他的であり、ロックを取得したトランザクションのみがアクセスできる。
