REDOログに関する検証 その6
< REDOログに関する検証 その6 > ペンネーム つけまい
— 内部構造を理解し
パフォーマンスの向上に役立てる —
前回は、DUMPコマンドを用いて、実際のREDOログ・ファイルの中身を覗いてみ
た。
今回は、DUMP中の重要な部分について、もう少し詳しく解説を行う。
************** DUMPの解説 ***************
REDOログ・ファイルのDUMP
上記のDUMPは、以下のトランザクション処理部分のみのDUMPデータを抜粋した
ものである。
———- SQL文 ———-
DESC WORK03 名前 NULL? タイプ ------------------------------- -------- ---- EMPNO NUMBER(4) ENAME VARCHAR2(6) ADDRESS VARCHAR2(12) JOB VARCHAR2(8) MGR NUMBER(4) SAL NUMBER(7) COMM NUMBER(7) DEPTNO NUMBER(2)
※ EMPNOにはインデックスは作成していない
UPDATE WORK03 SET ENAME = 'haneda' WHERE EMPNO = 1001 ; 1行が更新されました。 COMMIT ; コミットが完了しました。
上記のトランザクションを実行すると、以下の1~4に対する変更を記録した
4つのチェンジベクターが生成される。
1.ロールバックセグメントのトランザクション表 (ロールバックセグメントのセグメントヘッダー内に存在している) 2.ロールバックセグメントのデータブロック 3.テーブルWORK03のブロック 4.コミット情報
それでは、各チェンジベクターが、それぞれどのような関連を持っているのか
を見てみよう。
———————————————————————-
・行3のDBAは、トランザクション表が存在するディスク上の位置を指したアド レスである。 ・行5のubaは、ロールバックセグメントのデータブロックが存在するアドレス である。したがって、行6のロールバックセグメントのデータブロックが存在 するアドレスDBAと同じはずである。 ・行18のbdba及びhdbaは、テーブルWORK03のデータブロック及びヘッダーブロッ クが存在するアドレスである。したがって、行27のテーブルWORK03のデータ ブロック及びヘッダーブロックが存在するアドレスbdba及びhdbaと同じはず である。 ・行20、29のslotは、ブロック中の何レコード目に存在するかを表したもので ある。したがって、これらの値は同じはずである。このトランザクションの EMPNO=1001は、テーブルWORK03中の1レコード目に存在するので、ここには0 が入っている(5レコード目は4)。 ・行21、30のsizeは、更新前と更新後のデータ長の差分を表したものである。 このトランザクションは、ENAMEをnaritaからhanedaに変更しており、データ 長は共に6バイトなので、それぞれに0が入っている。もし仮に、6バイトから 5バイトに変更した場合、行21には1が入り、行30には-1が入ることになる。 ・行22、31のcolは、テーブル中の何カラム目かを表したものである。したがっ て、これらの値は同じはずである。項目ENAMEは、テーブルWORK03中の2番目 に位置するので、ここには1が入る。 ・行22、31の[ 6 ]は、実際に格納されるデータのバイト長を表したものである。 ・行22、31の【6e 61 72 69 74 61】及び【68 61 6e 65 64 61】は、実際に格 納されるデータをキャラクタコードで表したものである。 行22の【6e 61 72 69 74 61】は、更新前の旧データであるnaritaを、 行31の【68 61 6e 65 64 61】は、更新後の新データであるhanedaをそれぞれ 意味している。 ・行23のDBAは、テーブルWORK03中の、トランザクションの対象となるデータが 格納されているブロックのアドレスである。したがって、行18、27のbdbaと 同じはずである。 ・行26のubaは、トランザクションのUNDOデータが格納されているブロックのア ドレスである。したがって、行6のDBAと同じはずである。 ・行35のDBAは、コミット情報をトランザクション表に書き出した際のアドレス である。したがって、行3のDBAと同じはずである。 ・行37のubaは、コミットの対象となるロールバックセグメントのデータブロッ クが存在するアドレスである。したがって、行6のDBAと同じはずである。
この辺の情報は、Oracle8iからの新機能であるログマイナーの方が見やすいだろう。
ログマイナーに関しては、別の機会で検証する予定である。
次回は、REDOログに関する統計情報についての解説を行う。
以上 猛暑も一休みの茅ヶ崎にて