Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 運用と操作


4.3.1 OpenTP1のジャーナルについて

OpenTP1のジャーナルの構成について説明します。

〈この項の構成〉

(1) レコード

OpenTP1のジャーナルには,OLTPレコードとジャーナルレコードがあります。

OLTPレコード

OLTPレコードは,ジャーナルを取得する場合のI/O単位で,1OLTPレコードは4096バイトです。jnlinitコマンドの-nオプションで指定するレコード数,およびjnllsコマンドに-dオプションを指定した場合に表示されるレコード数は,OLTPレコードを示します。

ジャーナルレコード

ジャーナルレコードは,ジャーナルブロックを構成するデータの単位です。システムで発生する履歴情報,統計情報などの論理的単位が一つのジャーナルレコードになります。ジャーナルレコードの最大長は,システムジャーナルサービス定義のjnl_max_datasizeオペランドに指定した値以下です。jnleditコマンドの結果で表示されるレコードはジャーナルレコードを示します。

(2) ジャーナルブロック

ジャーナルバッファ上のデータをジャーナルファイルに出力する単位がジャーナルブロックです。一つのジャーナルバッファは,システムジャーナルサービス定義のjnl_max_datasizeオペランドに指定した大きさで確保されます。一つのジャーナルブロックは1〜n個のジャーナルレコードで構成されています。ジャーナルレコードを取得した場合に,ジャーナルバッファにジャーナルレコードが書き込めなくなったり,同期点ジャーナルレコードの取得要求が発生したりするときは,その時点までのジャーナルレコードを1件のジャーナルブロックとしてジャーナルファイルに取得します。ジャーナルブロックをジャーナルファイルに書き込むと,jnllsコマンドで表示されるブロック番号が1カウント増えます。

OpenTP1のジャーナルは,1件のジャーナルブロックを出力するのにOLTPレコードを1〜n個使用します。例えば,システムジャーナルサービス定義のjnl_max_datasizeオペランドに32000を指定していた場合,1〜8個のOLTPレコードを使用します。最大8個になるときの計算式は,↑(32000/4096)↑です(↑↑:小数点以下切り上げ)。ジャーナルバッファにジャーナルレコードを取得できなくなった場合はOLTPレコードを8レコード分使用します。ただし,同期点ジャーナルレコードの取得の場合,その時点までのジャーナルレコードをジャーナルブロックとして取得するため,4096バイト未満のジャーナルブロックができる場合があります。この場合は,OLTPレコードは1レコード分だけ使用します。

レコードとジャーナルブロックの関係を次の図に示します。

図4‒3 レコードとジャーナルブロックの関係

[図データ]

この図では,一つのジャーナルブロックは,6個のジャーナルレコードで構成され,二つのOLTPレコードを使用してジャーナルファイル内に格納されています。

OpenTP1のジャーナルファイル内の使用済み容量は,jnllsコマンドに-dオプションを付けて実行して表示されたレコード数に,OLTPレコードの4096バイトを掛けると求められます。例えば,次の図に示すようなjnllsコマンドの実行結果を得た場合,jnlgrp02の使用済みのジャーナルファイル容量は,(13)16×4096バイト=77824バイトとなります。

図4‒4 jnlls -j sys -dの実行結果

[図データ]