goo blog サービス終了のお知らせ 

ブラック企業だけど頑張るお!→辞めたったwwww

ブラック企業しか内定もらえなかったお!でもそこで頑張るお!
→やっぱりキツイから辞めたわ

排他制御と2相コミット

2009-06-21 19:55:43 | データベース技術
☆排他制御
データベースシステムでは、あるトランザクションが更新中のデータを、別のトランザクションが同時に更新してしまった場合、データの整合性が保てなくなってしまう。

「排他制御」とは、データの矛盾を防ぐため、データの更新中はアクセス制限(ロック)をかけて、別のトランザクションが更新できないようにする制御である。


排他制御にはDBMSが自動に行うものと、アプリケーションプログラムがDBMSが明示的に指示して行うものとがある。


☆占有ロックと共有ロック
ロックには占有ロックと共有ロックがある。

占有ロック:更新時にかけるロック。後のトランザクションは読取りも更新もできない。共有ロックも占有ロックもできない。

共有ロック:読取り時にかけるロック。後のトランザクションはさらに共有ロックをかけ、読取ることができるが更新や占有ロックはできない。

☆デッドロック
複数のトランザクションが「互いに相手が占有ロックしている資源を要求」して待ち状態となり、実行できなくなる状態。


☆コミットメント制御
集中型のデータベースでは、「コミットメント制御」によって一つの処理をすべて行うか(コミット)、全く行わないか(ロールバック)のどちらかにして整合性を保っている。
つまり、一部だけを実行して、残りを実行しないということはない。

しかし、分散データベースでは片方が「コミット」、もう片方が「ロールバック」という状態に陥る可能せいがある。

そこで、分散データベースでは、各々のトランザクション処理をすぐ確定するのではなく、コミットもロールバックも可能な中間状態を設定し、その後確定処理に入るといった「2相コミットメント制御」を行う。

※ACID特性
トランザクション処理において、アプリケーションに要求される特性として、「ACID特性」がある。

・Atomicity(原子性)
トランザクション処理がすべて完了したか、全く実行されていないかで終了すること。(中途半端にならないこと)

・Consistency(一貫性)
データベースの内容が矛盾のない状態であること。

・Isolation(分離性又は隔離性)
複数のトランザクションを同時に実行した場合と、順番に実行した場合の処理結果が一致すること。

・Durability(持続性または永続性)
トランザクションが正常終了すると更新結果は障害が発生してもデータベースから消失しないこと。

最新の画像もっと見る

post a comment