質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
情報処理技術者

情報処理技術者とは、経済産業省が「情報処理の促進に関する法律」に基いて行っている国家試験、及びその資格保有者のことを指します。情報技術の原理・基礎に関する知識や技術があるという評価を受けることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

890閲覧

データベース スペシャリスト試験 ロールバックがどうしてもわからない

firstbiz

総合スコア60

情報処理技術者

情報処理技術者とは、経済産業省が「情報処理の促進に関する法律」に基いて行っている国家試験、及びその資格保有者のことを指します。情報技術の原理・基礎に関する知識や技術があるという評価を受けることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2023/01/27 00:20

編集2023/01/27 00:23

秋にデータベーススペシャリスト試験を受けるべく学習中です。

ロールバックについてどうしてもわからないので、ぜひ教えてください。

このような問題があります。

イメージ説明

答えは「ア」で、T6をロールバックする必要があります。

ロールバックは「更新前ログファイル」が必要ですが、コミットしていないので、ログファイルは存在しないのではないでしょうか?
それともログファイルはコミット前にも作られるのでしょうか?

出題のT6だと、コミット前なので、特に何もせずに再起動すれば、トランザクション開始前の状態に戻るので、何もしなくても良いのではないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dameo

2023/01/27 04:16

特定のデータベースを想定せずにチェックポイントからの復旧を考えるので、チェックポイント以降に書き込みがあり、コミット完了していないT6は「当然ロールバック」です。 具体的に言うなら、「T6がコミット中に電源断などの障害が発生した」という可能性を考慮していないのではありませんか?
guest

回答2

0

ベストアンサー

ロールバックは「更新前ログファイル」が必要ですが、コミットしていないので、ログファイルは存在しないのではないでしょうか?
それともログファイルはコミット前にも作られるのでしょうか?

仕組みはDBMSにより異なりますが、更新前後に関する出力されたログを利用する事によって、コミット/ロールバックのトランザクション制御を行います。
ですので、コミット/ロールバック以前にログは出力されます。

出題のT6だと、コミット前なので、特に何もせずに再起動すれば、トランザクション開始前の状態に戻るので、何もしなくても良いのではないでしょうか?

ロールバックしなくともコミットしなければ良いという意味では、そういう振舞をする事もありますが、問題の意図としてはそれはロールバックです。

投稿2023/01/27 02:33

sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

firstbiz

2023/01/27 02:50

ログファイルを使わずにもとに戻ることも、出題ではロールバックとしているということですね。 なるほど。ありがとうございました。
guest

0

コミット前なので、特に何もせずに再起動すれば、トランザクション開始前の状態に戻るので

何もしなければデータは不整合なままです。それを戻す作業がロールバックです。

投稿2023/01/27 00:50

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/01/27 00:54

> それともログファイルはコミット前にも作られるのでしょうか? はい、あらゆるデータベース操作はジャーナルに書き出されます。
firstbiz

2023/01/27 00:54 編集

ありがとうございます。しかしチェックポイントを経ていませんから、HDへの書き出しはないですよね? 不整合は起きようもないのではないでしょうか?
maisumakun

2023/01/27 00:55

> しかしチェックポイントを経ていませんから、HDへの書き出しはないですよね? そんなことはありません。作業過程もディスクに書き出しています。
firstbiz

2023/01/27 01:03 編集

すいません、「チェックポイント」についてはログではなく、データそのものの話でした。 書籍では「チェックポイントまではデータはバッファ上で更新されるだけ」とありました。 例えばトランザクション中にA⇨Bに更新したとして、チェックポイントでは「B」として書き出されるのでしょうか? それとも「A」なのでしょうか? もし「B」として書き出されるのなら、確かに更新前ログファイルでロールバックするのはわかりますが、そうなると今度は「更新前ログファイルはいつ作られるのか?」が疑問になりました。 最初の回答で「ログファイルは常に作成される」とのことですが、これも書籍では「ログバッファからコミット時または不定期にログファイルに書き出される」とありました。
maisumakun

2023/01/27 01:31 編集

> 最初の回答で「ログファイルは常に作成される」とのことですが、これも書籍では「ログバッファからコミット時または不定期にログファイルに書き出される」とありました。 自分の回答の意図としては、「コミットやチェックポイントといったタイミングと関係なく」という意味合いでした。不定期であっても構いません。
maisumakun

2023/01/27 01:33

> 例えばトランザクション中にA⇨Bに更新したとして、チェックポイントでは「B」として書き出されるのでしょうか? それとも「A」なのでしょうか? データベースの構造によりますが、「AとB両方」ということもありえます。
firstbiz

2023/01/27 02:04

ログが不定期ということであれば、障害発生時にログが存在していない可能性もありますね。 トランザクションT6の場合、もしログが存在していなければロールバックできないことになりますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問