H24 AM2 問17

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

①begin transactionレコードの書出し
③ログに更新前レコードの書出し
④ログに更新後レコードの書出し
②データベースの実更新
⑤commitレコードの書出し
⑥end transactionレコードの書出し


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

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

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

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

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

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

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop