ISAMデータベースは,データの実体を格納する「データファイル」と,アクセスを高速化できるように,データへのインデクスを管理する「キーファイル」から成り立っています。ISAMは,レコードを削除しても無効領域になるだけで,ファイルサイズが自動的に縮小されることはありません。
ISAMデータベースを使用すると,日々の運用で占有量が増えてしまうことによるファイルサイズの問題と,ファイルサイズの肥大化およびフラグメンテーション化によるジョブ実行性能の劣化の問題が発生します。また,突然の電源ダウンなどで強制停止された場合,ISAMファイルのインデクスが不整合となるおそれがあります。
これらの問題は,QUEUEジョブ,サブミットジョブ数に応じて適切な時期にISAMデータベースを再編成することで解決できます。
なお,JP1/AJS3 - AgentはJP1/AJS3のデータベースを持たないため,再編成の必要はありません。
(1) jajs_maintainコマンドで再編成する
バージョン07-00以降のJP1/AJS2 - ManagerおよびJP1/AJS3 - Managerでは,jajs_maintainコマンドによってマネージャー機能を縮退し,ISAMデータベースを再編成(メンテナンス)できます。マネージャー機能を縮退して再編成する方法では,稼働中のサービスに対してデータベースの切断要求を出し,データベースを切り離してから,安全にISAMデータベースを再編成できます。
ISAMデータベースを再編成するときは,jajs_maintainコマンドによるデータベースの再編成を推奨します。
jajs_maintainコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス2 3. 特別な運用で使用するコマンド jajs_maintain」を参照してください。
(2) jpqautocondスクリプトを利用して再編成する
QUEUEジョブ,サブミットジョブの実行環境のデータベースは,ジョブ情報の保存日数で指定された日数を超過したジョブ情報については,自動的にレコードを削除します。レコードが削除されると,無効領域が発生します。データを格納する領域は再利用されますが,ISAMファイルのキー再利用機能を有効にしていない場合,キーファイルには無効領域が残ります。データベースを再編成することで,占有されたディスク領域を解放できます。また,無効領域が多くあるデータベースへアクセスするとディスクのI/O回数が増加し,性能が低下することがあります。これも再編成することで改善されます。
ジョブ実行環境データベースはjpqautocondスクリプトを使用して再編成します。
また,jpqdbcondコマンドでもQUEUEジョブ,サブミットジョブの実行環境のデータベースを再編成できます。その場合は,必ずバックアップを取得してから再編成してください。jpqdbcondコマンドの詳細については,マニュアル「JP1/Automatic Job Management System 3 コマンドリファレンス1 2. コマンド jpqdbcond」を参照してください。
(a) 未使用領域率の表示と再編成の時期
QUEUEジョブ,サブミットジョブの実行環境の,データベースの未使用領域率の割合は,jpqdbcond -lコマンドで確認できます。ISAMファイルが使用中の場合は,jpqdbcond -Lコマンドで未使用領域率の割合を確認できます。ただし,jpqdbcond -Lコマンドで未使用領域率を表示した場合,未使用領域率の値に誤差が生じます。jpqdbcond -Lコマンドを使用する場合は,ジョブを多く実行する時期を避けて使用してください。
ISAMデータベースのキー再利用機能を有効にしていない場合,1日当たり1万件のジョブを実行し,ジョブ情報保存日数が7日とすると,ジョブ情報保存日数の経過後1日当たり,最大約86メガバイトの無効領域が発生します。この無効領域は,再利用されるデータファイル分を含みます。
運用を続けていく中で,キーファイル中に発生する無効領域のサイズが大きくなった場合には,データベースアクセスに要するファイル入出力時間が増えるため,性能が著しく劣化します。
QUEUEジョブ,サブミットジョブの実行環境のデータベースJPQJOBINFO.K02ファイルが20メガバイトを超えないように監視してください。20メガバイト超えても再編成をしないで運用を続けると,性能が急激に悪化することがあります。
なお,キー再利用機能を使用している場合,20メガバイトに到達することはほとんどありません。ただし,長時間運用によってキーファイル内の利用効率が低下すると,このサイズに達するおそれがあるため,ファイルサイズを監視することを推奨します。
また,データベース再編成の時期については,ジョブ情報の保存日数も目安にしてください。ジョブ情報の保存日数については,マニュアル「JP1/Automatic Job Management System 3 構築ガイド2 2.3 ジョブ実行環境設定」を参照してください。
(b) 未使用領域サイズおよび未使用領域サイズしきい値の出力
QUEUEジョブ,サブミットジョブの実行環境の,データベースの未使用領域サイズは,jpqdbcond -iコマンドで確認できます。未使用領域サイズは通知メッセージに出力されます。
また,未使用領域サイズがしきい値に達しているかを,jpqdbcond -tコマンドで確認できます。未使用領域サイズしきい値に達していた場合は,警告メッセージが出力されます。
メッセージの出力先には,次の出力先を単独または組み合わせて指定できます。
ジョブを多く実行する時期を避けて,jpqdbcond -tコマンドをジョブとして定義・実行することで,定期的にISAMファイルの状態を確認できます。
(c) 再編成の手順
QUEUEジョブ,サブミットジョブの実行環境のデータベースの再編成手順を次に示します。