
No.7ベストアンサー
- 回答日時:
No.4のymmasayanです。
補足質問にお答えします。かなり、話が混線してきていますので、先に整理しておきます。
まず障害回復には、
1.トランザクション単体のロールバック と、
2.ハード障害、DBMS障害、OS障害などによる全体障害回復
の2つがあります。これが混線しています。
1は更新前ログだけあればロールバックできます。
2は更新前ログ、更新後ログ、チェックポイントなどをとります。
障害発生時に、最新のチェックポイントを基準に、ロールバックとロールフォワードを使い、回復します。
蛇足ですが、2種類の更新前ログは別々の場所にとられます。
回答です。
> トランザクション開始時と障害時までの間にチェックポイントが無いという前提で書いてました。
> なのでトランザクション障害時に更新前ログがバッファには存在しても、
> チェックポイントを通っていないのでログファイルには存在しないと思うのです。
>もしくはトランザクション開始時より前のチェックポイントで記録した
> 更新前ログを使うということだとすると、
> チェックポイント時点には戻れてもその後にあったトランザクション開始時には
> 戻れない気がするのです…。
上に書いたように、トランザクション単体のロールバックであればチェックポイントは無関係です。
全体ダウンの時ならチェックポイントが関係します。
ついでに、単体ロールバック用の更新前ログはバッファリングによる消失は考える必要は有りません。
No.6
- 回答日時:
#2です。
>前回のチェックポイントより、障害が起きたトランザクションの開始時の方が後の場合、
#4の方の説明が参考になるかと思いますが、個々のトランザクションでは、
・トランザクション開始
・トランザクション正常終了(コミット)
・トランザクション異常終了(ロールバック)
の3つだけ考えればいいです。
DBMSやOLTPでチェックポイントというものがありますが、それは個々のトランザクションとは関係なく、DBMSやOLTP自身の障害時の回復のためのものです。

No.5
- 回答日時:
トランザクション処理は、ミッションクリティカル部分で利用されていますのでデータベースだけとは限らないです。
トランザクションの基本は
情報を更新する際、
更新前の状態を保持しており、更新途中に障害が発生しても
更新前に戻す事を可能にする事です。
また、正常に更新された後では、更新前に戻すことは
トランザクション処理ではできません。
>>この更新前情報というのはいつログファイルに書き出されたのでしょうか?
トランザクションの宣言をした時に確保されます。
逆言うとトランザクションの宣言がされていないと
確保されませんので整合性が取れなくなる可能性があります
ご返答ありがとうございます。
>トランザクションの宣言をした時に確保されます。
ログファイルにログが書き込まれるのはコミット時とチェックポイント時だけかと思っていたのですが、
トランザクション開始時(開始時=宣言時ですよね?)もそうだということで良いでしょうか。
No.4
- 回答日時:
この問題はDB更新とログの書き出しをバッファリングしているかどうかによって、
説明が違ってきます。
方式としては、
1.DBの書き出しもR/Wログもバッファリングしない。
2.DBの書き出しのみバッファリングする。
3.両方ともバッファリングする。
の3つが有ります。
歴史的には1→2→3の順に進んできました。
目的は処理性能向上ですがそれだけ回復処理が複雑になります。
では3を前提に回答しましょう。
DBの書き出しも更新前/更新後ログもバッファリングされていますので
必ずログの方を先に書き出すようにします。
チェックポイントでは瞬間的に全タスク(プロセス)を停めて、
バッファリングされているR/Wログの書き出しとDBの書き出しをした後、
チェックポイントログを書き出します。ここで、バッファリングが0になります。
> この更新前情報というのはいつログファイルに書き出されたのでしょうか?
上の説明でほぼお判りだと思いますがDBを読み込んだら、
即、更新前ログを書きます。
ただ、本当にログに書き出す場合と、メモリー上のバッファーに書き出す場合とが
あるということです。
ご返答ありがとうございます。
トランザクション開始時と障害時までの間にチェックポイントが無いという前提で書いてました。言葉足らずですみません。
なのでトランザクション障害時に更新前ログがバッファには存在しても、
チェックポイントを通っていないのでログファイルには存在しないと思うのです。
もしくはトランザクション開始時より前のチェックポイントで記録した更新前ログを使うということだとすると、
チェックポイント時点には戻れてもその後にあったトランザクション開始時には戻れない気がするのです…。
チェックポイント時の動作の説明はとてもわかりやすかったです。ありがとうございます。
No.3
- 回答日時:
あくまでも情報処理試験対策として私が勉強し、理解している範囲でのお答えになりますが。
チェックポイント時にはトランザクションが開始されていない。ということは、DBが更新されていない。ということになります。
「ログファイルの更新前情報によってロールバックする」ということは、トランザクション開始前の状態にするということになりますので、その後はトランザクションの再処理によって、障害発生時の状態まで戻します。
ご返答ありがとうございます。
ロールバック自体はなんとなくわかるのですが、更新前情報がログファイルに書き出されるタイミングが気になったので・・・。
質問が分かりづらくてすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
交通安全協会って
-
床屋で写真を見せてこんなふう...
-
引越しの度に変更届けを出しますか
-
住民票のない居住地で国民健康...
-
住所変更した免許証を新しく発行
-
運転免許証の住所をあまり見せ...
-
イメージ写真のことを何て言い...
-
会計帳簿を紛失したらどうなる...
-
表札に番地を入れる場合
-
地方の百貨店の販売員をしてい...
-
会社宛の書留郵便の受け取り
-
他県でも口座は作れますか?
-
起点住所とは何ですか? 赴任旅...
-
愛知県での免許更新手続きと住...
-
国家資格申請で・・
-
シェフはなぜ腕組みをして写真...
-
訂正印について
-
クロネコヤマトってBという住所...
-
入札の委任状の代理人の住所
-
エアメール(会社宛)の宛名の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ワードに葉書を4面付けする方法...
-
交通安全協会費って・・・
-
賃貸契約更新料について
-
引越しの度に変更届けを出しますか
-
床屋で写真を見せてこんなふう...
-
アルバイト先で学生証の提示を...
-
表札に番地を入れる場合
-
北海道の住所表記について
-
会社宛の書留郵便の受け取り
-
起点住所とは何ですか? 赴任旅...
-
住民票のない居住地で国民健康...
-
知り合いに聞いたのですが、美...
-
法律事務所に写真で免許証を送...
-
住所をコロコロ変える会社
-
エアメール(会社宛)の宛名の...
-
地方の百貨店の販売員をしてい...
-
免許証コピーを返却してくれません
-
パンフレットの正誤表(変更表...
-
イメージ写真のことを何て言い...
-
資格免許の写し、とは?
おすすめ情報