IBM i (Db2 for i)のデータベースファイルをストレージに書き出すタイミング
データベースファイルのデータはシステムのRAS(Reliability, Availability, Serviceability)の要件を満たすために適切な時点でディスクに書き出す必要があります。
IBM i (Db2 for i)の場合、以下のタイミングでデータベーステーブル(PF)のストレージ装置への書き出しが発生します。
1.データベースファイルをFULL CLOSEした時点(データベースファイルをSHAREしていない場合のCLOSE)
※参考にデータベースファイルをSHAREしている場合は以下のように全てのジョブで使用が終了した時点となります。
```
OPENDBF FILE(XXX) OPNID(*FILE) TYPE(*PERM)
:
複数JOBでODB SHARE中
:
CLOF OPENID(XXX) <==ここで FULL CLOSE
```
2.データベーステーブルのFRCRATIOパラメーターに指定されたレコード数を更新・追加・削除した時点
※OVRDBFコマンドで一時的にFRCRATIOパラメーターを変更した場合も含む
※FRCRATIO(*NONE)の場合はシステムがストレージへの書き出しタイミングを決定
※FRCRATIOパラメーターを小さくするとストレージへの物理I/Oが頻繁に発生することになり、アームビジー率を上昇させる=I/Oパフォーマンスを劣化させる懸念があるので注意が必要です。
3.*CLSクラスでPRRGE(*YES)を指定しているジョブにおいて、ロングウェイトが発生した場合
※これは個々のジョブのPAGに対する指定となります
※基本的には対話型ジョブで発生
妥当な範囲のページングはシステムにとって必要なものであり、効率上の問題とはなりません。もちろんページングを実行中にも他のジョブは実行できます。
データベーステーブルは通常、その全レコードをメインメモリ上に置くことはできないので、データベースのデータへの参照はページングを引き起こします。
※例外としてはデータベーステーブル全てを展開可能なメインメモリの空きがあったときにSETOBJACCコマンドを実行すればテーブル全体をメインメモリ上に展開できます。
参考:オブジェクト・アクセスの設定(SETOBJACC)https://www.ibm.com/docs/ja/i/7.4?topic=ssw_ibm_i_74/cl/setobjacc.html