投稿する

[0158] H24 AM2 問17

 柴犬さん(No.1) 
WALプロトコルによると下記の順のようです。

@begin transactionレコードの書出し
Bログに更新前レコードの書出し
Cログに更新後レコードの書出し
Aデータベースの実更新
Dcommitレコードの書出し
Eend transactionレコードの書出し


Bログに更新前レコードの書出し
Cログに更新後レコードの書出し
はそれぞれなんのレコードを書き出しているのでしょうか。この項目の少し前に共有ロック等の話があるのですが、そことの関連がよくわかりません。

下記の理解で良いでしょうか?
トランザクション開始
→データロック
→データリード(データバッファへ)
→アップデート等々をデータバッファで実施
(その間に投げたSQLはログバッファに記載)
→データベースの今の値をログに記載(更新前レコード書出し)★
→データバッファの処理結果をログに記載(更新後レコード書出し)
→commit
→アンロック
→トランザクション終了

★の部分はロックかけたときにやっておいても問題ない気がするのですが、このタイミングでしょうか?
2021.01.15 15:09
関数従属さん(No.2) 
DB ブロンズマイスター
>下記の理解で良いでしょうか?

おおよそ上記の理解で問題ありません。

>→データベースの今の値をログに記載(更新前レコード書出し)★

>→アップデート等々をデータバッファで実施
の前かと思います。
2021.01.15 22:22

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。
© 2016-2023 データベーススペシャリストドットコム All Rights Reserved.

Pagetop