「駑馬十駕」 IT系情報を中心に調べた事をコツコツ綴っています。

少しIT関連に詳しい人なら不思議に思うことがありませんか?

データーベースに対して同時に書き込むことがあってもなぜデーターは正しく処理されるのか。あるいは同時に書き込もうとした場合に書き込みトランザクションはなぜエラーにならないのだろうかと。

OracleやMS SQL Serverなどのデーターベース管理システムでは、ある処理がデーターベースに書き込み中に他の処理がデーターベースに書き込もうとすると、排他制御と呼ばれる仕組みが働いて書き込めないようになっています。
このことにより、同時に複数のトランザクションがデーターベースの更新を行うことでデーターが壊れてしまったりすることを防いでいます。

その仕組みは大まかに以下の概要となります。

  1. 特定のトランザクションがデーターベースに書き込みに行く
  2. データーベースはそのトランザクションにのみアクセスを許可。他のトランザクションからはアクセス出来ないロック状態となります。
  3. 最初のトランザクション処理が実行されます。
  4. 処理中のトランザクション処理が完了すれば、他のトランザクションのアクセスが可能となります。

基本的にデータベース管理システムでは上記の様な方法で、複数トランザクションからの同時実行を制御しています。

Ads by Google

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">