「データベース - 排他制御」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
編集の要約なし
3行目: 3行目:
あるトランザクションが共有資源(データやファイル)にアクセスしている時は、<br>
あるトランザクションが共有資源(データやファイル)にアクセスしている時は、<br>
他トランザクションからはアクセスできないようにして直列に処理されるように制御することである。<br>
他トランザクションからはアクセスできないようにして直列に処理されるように制御することである。<br>
<br>
<br><br>
同時アクセスによる不整合の例<br>
 
同時アクセス.png
<br>
排他制御をすることで整合性を保つ<br>
排他制御.png
<br>
== 排他制御の方式 ==
== 排他制御の方式 ==
排他制御の実現方式はいくつか存在するが、ここでは代表的な楽観ロック(楽観的排他制御)と悲観ロック(悲観的排他制御)を記載する。<br>
排他制御の実現方式はいくつか存在するが、ここでは代表的な楽観ロック(楽観的排他制御)と悲観ロック(悲観的排他制御)を記載する。<br>
<br>
<br>
 
===== 楽観ロック(楽観的排他制御) =====
== 楽観ロック(楽観的排他制御) ==
楽観ロックとは、滅多なことでは他者との同時更新は起きないであろう、という楽観的な前提の排他制御のことである。<br>
楽観ロックとは、滅多なことでは他者との同時更新は起きないであろう、という楽観的な前提の排他制御のことである。<br>
データそのものに対してロックは行わずに、更新対象のデータがデータ取得時と同じ状態であることを確認してから更新することで、<br>
データそのものに対してロックは行わずに、更新対象のデータがデータ取得時と同じ状態であることを確認してから更新することで、<br>
34行目: 28行目:
<br><br>
<br><br>


== 悲観ロック(悲観的排他制御) ==
===== 悲観ロック(悲観的排他制御) =====
他者が同じデータに頻繁に変更を加えるであろう、という悲観的な前提の排他制御のことである。<br>
他者が同じデータに頻繁に変更を加えるであろう、という悲観的な前提の排他制御のことである。<br>
更新対象のデータを取得する際にロックをかけることで、他のトランザクションから更新されないようにする方式である。<br>
更新対象のデータを取得する際にロックをかけることで、他のトランザクションから更新されないようにする方式である。<br>

案内メニュー