排他制御とは?
データベースでは、複数のユーザが同時に更新処理を実行した場合も、データに矛盾がおきないようにするために排他制御という機能を備えています。
更新をしようとするトランザクションが更新している間は、他のトランザクションが更新目的で同じデータにアクセスしようとしても、アクセスできません。
排他制御では「データに鍵をかける」という意味で、ロックという仕組みを使います。
データへのアクセスが少しでも早かったほうのトランザクションがロックを先に取得し、解除するまで主導権を握ります。
ロックがかかっているデータに対してアクセスできるのは、ロックをかけたトランザクションだけですから、後からアクセスしたトランザクションはしばらく待たされます。
トランザクションがロックを解除してはじめて、解除待ち状態のトランザクションはアクセスができるようになります。
今回は、前回の続きでSQLを使ったデータベースの操作とトランザクションについてお話してきました。トランザクションについては、その特性のおかげでデータベースへの同時実行性やデータの復旧が可能になっているわけですが、今回の記事を書くにあたって本当に奥が深いなぁと実感しました。記事ではなるべく簡単にとお話してしまいましたが、もし興味が湧いちゃいましたら、是非いろいろと勉強してみてください。
さて次回は、本連載でここまでお話してきた、リレーショナル・データベースの機能やSQL発行した際のデータベース側の動作について、オラクルのデータベースではどういう動きをするのかというところをお話していきたいと思っています。
筆者紹介
鈴木浩司(すずき こうじ)
日本オラクル株式会社 システム製品統括本部
クロスインダストリービジネス推進本部
担当製品:
Oracle Fusion Middleware
経歴:
SI企業にて、約8年システム開発に携わる。日本オラクルに営業として入社。エンジニアにコンバートされ、Java,SOA,IDM製品を担当。現在に至る。
一言:
連載もいよいよSQLの話に入ってきました。実際にSQLを実行できるようにDBMSをインストールしてみませんか? Oracleデータベースはインストールが難しいって聞いた?そんな話は過去の話です。今ではサルでもインストールできます(2003年のOrale Worldでは実際にサルのモモちゃんがOracle Database 10gをインストールしました)。
オラクルでは、こうした都市伝説を検証しています。詳しくはこちら