トランザクション関連

◆ ACID特性

 DBMS( DataBase Management System の略 要は Oracle や SQLServer 等のこと) が持つべき特性についてです。

原子性 ・・・ トランザクション内の処理は、実行され終えているか、または全く処理されていないかのどちらかしかない。

一貫性 ・・・ 同じデータベースにおける同じ処理は、何回実行して同じ結果になる。

独立性 ・・・ あるトランザクションの処理結果は、他のトランザクションの処理の影響を受けない。

耐久性 ・・・ トランザクション完了後に障害が発生しても、更新された内容は保証される。


 過去問題では、よく原子性について出題されるそうです。

◆ 障害回復について

 まずは、トランザクションについて記述しておきます。 トランザクションとは、関連する複数の処理を一つの処理単位としてまとめたものを言います。 簡単に言えば、何か商品を買ったとすれば、注文表にデータが1つ追加し、在庫から個数分減らす処理を1つのトランザクションと呼びます。

 ここでは、そのトランザクションの処理中に、何らかの障害で処理が停止するとデータの更新がどの辺りまで進んでいるのか分からなくなり整合性が取れなくなります。 そこでデータの状態を、障害発生前の整合性の取れた状態にするのがロールバック、またはロールフォワードです。

 ロールバックとは、トランザクションが開始する前の状態に戻すことを言います。 通常は処理中にディスクが壊れたとかではない何らかのエラー(通信エラーとか)で、トランザクションが中断された場合に行なうものです。

 ロールフォワードとは、通常はディスクが壊れた時に使われる操作であって、バックアップファイルを使用して一旦データを復元します。 そのあとバックアップ後に更新されたデータはログファイル(ジャーナルファイル 過去問題では「更新後情報」などで出題されている)など使用して、復元します。

 過去問題でも出題されたのがチェックポイント。 チェックポイントとはトランザクションによるデータの更新をメモリに蓄積しておき、一定の間隔でまとめて記録されています。 (コミットとはまた別のもの)
このタイミングをチェックポイントと言い、このチェックポイントが完了したトランザクションはディスクに反映済みなので、それ以前のデータの回復作業は不要となります。(ディスクが壊れたとかではなければ)
◆ 2相コミットについて

 分散システム(分散データベース)のトランザクションのシステムです。 データを分散管理しているので、データの整合性が合うように調停者というものをおき、コミットしたい時に調停者に問い合わせないといけないシステムです。

 分散データベースなので左のような図になると思います。ここではデータベースサーバーと書いてますが、問題では「参加者」と出たりします。
 データベースサーバーCは、コミットをしたいのですが、他のサーバーと整合性を合わせないといけないのでタイミングを取らないといけません。 そこで居るのが調停者です。Cから要求を受けたら、他のデータベースサーバーに対してコミットして良いか聞いて回ります。 もし1台でも拒否されたら、コミットはせず、全サーバーにロールバック要求を行います。
 過去問題では、このシステムの問題点みたいなものが出題されています。
 このシステムの欠点は、調停者に障害が発生すると、障害が回復するまでコミットもロールバックも行なえなくなるという欠点があります。



TOPページに戻る