てぃーだブログ › Unofficial oninit blog › ちょっと細かいテックネタ › バージョンアップについて - 「チェックポイント」

2023年12月02日

バージョンアップについて - 「チェックポイント」

以前のバージョンから最新(最近)のバージョンに移行する際、Informixの機能向上(一部「見直し」もあり)によりこれまでのパラメーター設定の考え方が通用しなくなってきているケースがいくつかあります。

簡単ですが、その一例として「チェックポイント」に関わるぱらめーたの変更について紹介します。

「チェックポイント」は、INFORMIXが「ライトバック( write back)」のキャッシュを一定の条件で物理ディスクに完全に同期させる処理のことです。

V10までは、チェックポイント処理の間は新たなディスク書き込み系の処理(SQL INSERT/UPDATE/DELETEを含む)がブロックされ(待たされる)ていました。チェックポイントが実行される際に物理ディスクに同期される対象となるデータ量をできるだけ減らすために、閾値 ( min_dirty, max_dirty)をできるだけ小さくしたり、定期的に強制的に実行されるチェックポイントの間隔を長めにしたり、という調整が必要でした。V9.21からは、SQL INSERT/UPDATE/DELETEなどのトランザクションのロールフォワード処理で復元可能なディスク書き込み(のダーティページ)についてはチェックポイント処理でのバッファプールから物理ディスクへの書き出しを省略することによりチェックポイント時の処理対象データ量を削減しチェックポイント中のブロック時間を短縮する実装(「ファジー・チェックポイント」)が導入されました。

しかしこれまでの方法ではチェックポイント処理によるブロックはある程度発生してしまう他、ファジー・チェックポイント処理の結果としてクラッシュリカバリーの所要時間が増える(従来であれば物理ログからのリカバリーだけで良かったケースでも論理ログを使用したロールフォワードリカバリーが必要になるなど)という問題がありました。

INFORMIX V11.10からは、従来のチェックポイントの実装を根本的に見直し物理ログ(バッファプールに書き込まれたページ変更の結果を物理ディスク内の特定の領域にリアルタイムに記録するしくみ)を活用してチェックポイント処理中にブロック時間がほとんど発生しないような実装になりました。

この新しい実装( 自動チェックポイント)では、チェックポイントの間隔などをINFORMIXが自動的に決定・調整します。ONCONFIGの"AUTO_CKPTS" ( またはその他いくつかの自動調整パラメータをまとめて制御する"AUTO_TUNE")というパラメーターを設定することにより新しいチェックポイントの実装が有効になります。"onstat -g ckp"の出力を確認すると、自動チェックポイントが有効かがわかります。出力の冒頭部分の"AUTO_CKPTS"がOnになっていれば有効です。

$ onstat -g ckp

IBM Informix Dynamic Server Version 12.10.FCxxYYY -- On-Line -- Up 00:00:14 -- zzzzzzzz Kbytes

AUTO_CKPTS=On RTO_SERVER_RESTART=Off

自動チェックポイントを使用するためには論理ログや物理ログのサイズが十分に確保されている必要があります。どの程度のサイズがあれば十分かは、バッファプールのサイズ、論理ログファイルが100%使用状態になるまでにかかる所要時間など多くの要素により左右されますが、これらのリソースが不足気味の場合、上記"onstat -g ckp"の出力末尾にガイドが表示されます。

以下の出力例では、「物理ログを最低 716800KBまで拡張しないとチェックポイント処理中にトランザクションがブロックされる可能性がある」旨のガイドが出力されています。
Based on the current workload, the physical log might be too small
to accommodate the time it takes to flush the buffer pool during
checkpoint processing. The server might block transactions during checkpoints.
If the server blocks transactions, increase the physical log size to
at least 716800 KB.


同じカテゴリー(ちょっと細かいテックネタ)の記事
DBACCESS_COLUMNS
DBACCESS_COLUMNS(2020-04-03 00:33)


※このブログではブログの持ち主が承認した後、コメントが反映される設定です。
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。