テンポラリログファイルの見積り式について説明します。
テンポラリログファイルとは、テンポラリログインデックス、BIログ域、AIログ域の総称であり、物理的に1つのファイルを指していないので注意してください。
ただし、rdblogコマンドによってテンポラリログ域を作成する場合、互いに同一のファイル、またはローデバイスを指定することも可能です。その場合のファイルサイズ、またはローデバイス上の占有サイズについては、同一のファイル、またはローデバイスを指定したテンポラリログインデックス、BIログ域、AIログ域の合計となります。
また、rdbsetupコマンドによって作成する場合は、すべて同一パーティション、またはファイルに作成されます。
以下にしたがって、それぞれの領域の見積もりを行ってください。
最初に同時実行アプリケーション数や更新BIログ量などにあわせて以下の項目を見積もります。
次にBIログ域サイズやユーザログテーブル復旧処理時間(ダウンリカバリ時間)の目標値にあわせて以下の項目を見積もります。
■トランザクションエントリ数
トランザクションエントリ数の見積り式を以下に示します。
ユーザログを取得する場合は、トランザクションエントリ数は、同時に実行するトランザクションの最大多重度を示します。
トランザクションエントリ数 = Mt × (1 + S) × λ Mt: 同時に実行するトランザクション数の最大値(最大の多重度) S : コマンドキャンセル(SQL文単位のキャンセル)を含む コミットトランザクションの割合(0~1) λ : 安全率(1.5以上) (注) |
注) 2以上を推奨しています。
トランザクションエントリ数によって、テンポラリログインデックス域のサイズが決まります。以下の式によってログインデックス部のサイズを見積もってください。
高信頼性ログ機能のインストール時に、メモリ空間に64bitを指定した場合
テンポラリログインデックス域のサイズ = ブロック長 + 2 × BLOCK(248 × T + 304) (バイト) T : トランザクションエントリ数 ブロック長 : テンポラリログ域のブロック長です。 テンポラリログファイル作成時にioオプションで 指定する値です。 特に指定しない場合は、512バイトです。 BLOCK( ) : カッコ内の式を、ブロック長の整数倍に切り上げます。 |
高信頼性ログ機能のインストール時に、メモリ空間に32bitを指定した場合
テンポラリログインデックス域のサイズ = ブロック長 + 2 × BLOCK(240 × T + 304) (バイト) T : トランザクションエントリ数 ブロック長 : テンポラリログ域のブロック長です。 テンポラリログファイル作成時にioオプションで 指定する値です。 特に指定しない場合は、512バイトです。 BLOCK( ) : カッコ内の式を、ブロック長の整数倍に切り上げます。 |
64ビットでブロック長が512(バイト)、トランザクションエントリ数が20の場合
テンポラリログインデックス域のサイズ = 512 + 2 × BLOCK(248 × 20 + 304) |
■トランザクション単位の更新ログ量と多重度
トランザクションの更新ログ量は、“3.4 ログ量の見積り式”を参照し、見積もってください。
トランザクションの多重度は、同時に実行するトランザクション数の最大値をもとに、見積もってください。
なお、テンポラリログファイルは、16ギガバイト未満で作成してください。
トランザクションが収集するログにトランザクション間でばらつきが大きい場合は、本見積り式の誤差が大きくなるため、実際に動作させて、必要ならテンポラリログファイルを変更してください。
運用を続けているうちにテンポラリログファイルの容量を変更しなければならなくなった場合は、rdblogコマンドで変更することができます。
■BIログ域サイズ
BIログ域は、トランザクション多重度およびそのトランザクションが出力するBIログ量を観点にして見積もります。トランザクションが収集するログにトランザクション間でばらつきが大きい場合は、本見積り式の誤差が大きくなるため、実際に動作させて、必要ならテンポラリログファイルを変更してください。
BIログ域のサイズ = Lb × トランザクションエントリ数 Lb : トランザクションの更新ログ量の最大値(バイト数) |
■ダウンリカバリ時間
ユーザログテーブル運用中にシステムダウンが発生したときに、Symfoware/RDBの再起動または切り替えの延長で行うユーザログテーブルの復旧処理の時間です。
システムダウン発生後の再起動時間の目標値(お客さまの要件など)から、ダウンリカバリ時間を検討する必要があります。
■AIログ域サイズ
AIログ域のサイズは、原則としてリカバリログ量を基準に決定します。AIログ域全体サイズは、リカバリログ量のおよそ2倍程度を目安にします。
ただし、リカバリ時間を抑えたい場合でも、AIの全体サイズが少なすぎると、トランザクション実行中に枯渇が発生する危険がありますので全体サイズは、BIサイズ以下とならない容量が必要となります。
α = リカバリログ量 × 2 β = BIログ域サイズ AIログ域のサイズ = MAX(α、β) … α、βいずれかの多い方を選択してください。 |
■リカバリログ量
リカバリログ量は、定常性能およびダウンリカバリ時間に影響を与えます。RDBシステムは、リカバリログ量を一定に保つように、一定間隔で、ユーザログテーブルのバッファからディスクへの書込みを行います。
リカバリログ量が少ない場合は、ユーザログテーブルのバッファの書込み頻度が増えるため、定常性能に悪い影響を与える可能性があります。
リカバリログ量が多い場合は、ダウンリカバリ時間が長くなります。
したがって定常性能を重視する場合は、ダウンリカバリ時間が運用に問題ない程度までリカバリログ量を多くとるようにしてください。
リカバリログ量の指定を省略した場合、デフォルト値は、AIログ域サイズが1.25メガバイト以上では512キロバイトが設定され、1.25メガバイト以下ではAIログ域サイズの40%が設定されます。その場合のダウンリカバリの時間は、およそ1~2秒です。リカバリログ量10メガバイトごとに5秒から15秒程度のダウンリカバリ時間がかかるとみて初期設定します。
ただし、リカバリログ量と、ダウンリカバリ時間の関係は、ディスク性能、バッファのサイズにより大きく影響を受けます。したがって、より精度の高いリカバリログ量とするためには、実際の運用に沿った環境下でダウンリカバリ時間を実測し、rdblogコマンドのUオプション、tオプションおよびcオプションで、リカバリログ量を再設定してください。