ロック粒度
Lock Granularity
ろっくりゅうど
ロックを掛ける対象となるデータの単位。データベース全体、表、ページ、行などがある。粒度を細かくするほど同時に実行できるトランザクションは増えるが、管理するロックの数が増えて負荷が大きくなる。粗くすると管理は楽になるが、待ちが増えて同時実行性が下がる。
Related
他の資格での定義
ロックをかける対象の大きさ。表単位、ページ単位、行単位などがある。粒度を細かくすると同時に実行できる処理は増えるが、管理するロックの数が増えて処理の負担が大きくなる。
ロックを取得するデータの単位。行ロック、ページロック、テーブルロック、データベースロックなどがある。粒度が細かいほど同時実行性は高まるが、ロック管理のオーバーヘッドが増大する。
ロックを掛けるデータの単位の大きさ。行、ページ(ブロック)、表、データベース全体などの段階がある。粒度を細かくするほど同時に実行できるトランザクションが増えるが、管理するロックの数とその処理の負荷が増え、逆に粗くすると負荷は減るが待ちが増えるので、処理の性質に合わせて選ぶ。
Related
関連キーワードの用語
トランザクションがデータを更新する際に取得するロック。排他ロックとも呼ばれ、他のトランザクションはそのデータの読取りも更新もできなくなる。共有ロックとも排他的であり、書込み時のデータ整合性を保証する。
トランザクションがデータを読み取る際に取得するロック。他のトランザクションも同時に共有ロックを取得して読取りが可能だが、専有ロック(更新)は取得できない。読取り時のデータの一貫性を保証する。
トランザクションがロックを扱う期間を、ロックを獲得するだけの拡張相と、解放するだけの縮小相の2つに分ける規約。一度ロックを解放したら、そのトランザクションは新たなロックを獲得しない。すべてのトランザクションがこれに従えば直列化可能性が保証されるが、デッドロックは防げない。
トランザクションの開始時刻印(タイムスタンプ)を使ってデッドロックを予防する方式。ロックを要求したトランザクションが、ロックを持つトランザクションより古ければ待ち(Wait)、新しければ自らロールバックし(Die)、同じ時刻印のまま後で再実行する。古いものだけが新しいものを待つので、待ちの閉路ができない。
トランザクションの開始時刻印(タイムスタンプ)を使ってデッドロックを予防する方式。ロックを要求したトランザクションが、ロックを持つトランザクションより古ければ相手をロールバックさせてロックを得て(Wound)、新しければ待つ(Wait)。Wait-Die方式とは逆に新しいものだけが古いものを待つので待ちの閉路ができず、古いトランザクションは待たされない。
トランザクションがデータにアクセスする前に、他のトランザクションのアクセスを制限するための仕組み。共有ロック(読取り用)と占有ロック(更新用)がある。
