(57)【特許請求の範囲】
【請求項１】
複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測装置であって、
ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出部と、
ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定部と、
前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出部と、
各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定部と、
各ジョブの実行時に発生するエラー回数をカウントするカウント部と、
前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出部と、
前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出部と、
を備えることを特徴とする処理時間予測装置。
【請求項２】
前記予測処理時間を用いて各ジョブが終了する予定となる時刻である予測終了時刻を算出し、当該予測終了時刻が、予めジョブごとに設定可能な終了期限を超過するか否かを判定する判定部と、
いずれかの前記予測終了時刻が前記終了期限を超過する場合に、警告を出力する警告出力部と、
をさらに備えることを特徴とする請求項１記載の処理時間予測装置。
【請求項３】
前記いずれかの前記予測終了時刻が前記終了期限を超過する場合に、予めジョブごとに設定可能な省略可能ジョブに該当するジョブをバッチ処理の対象から除外するジョブ除外部を、
さらに備えることを特徴とする請求項２記載の処理時間予測装置。
【請求項４】
複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測方法であって、
ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出ステップと、
ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定ステップと、
前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出ステップと、
各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定ステップと、
各ジョブの実行時に発生するエラー回数をカウントするカウントステップと、
前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出ステップと、
前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出ステップと、
を含むことを特徴とする処理時間予測方法。
【請求項５】
請求項４に記載の各ステップをコンピュータに実行させるための処理時間予測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理時間予測装置、処理時間予測方法および処理時間予測プログラムに関する。
【背景技術】
【０００２】
業務システムの中には、昼間等のシステム稼働時にオンライン処理でデータを処理し、夜間等のシステム停止時にバッチ処理でデータベースを更新させるものがある。このような業務システムでは、システムを稼働させる前にバッチ処理を効率良く処理する必要がある。さらに常時稼働のシステムになると、稼働中のシステムに影響を来たすことがないように、バッチ処理の実行に制約が設けられる。例えば、システムの稼働に影響を与えない程度のリソースを割り当ててバッチ処理を実行させ、バッチ処理の終了時刻に期限を設ける等の制約が課せられる。
【０００３】
このような状況下でバッチ処理を効率的に処理するためには、バッチ処理を実行する前にバッチ処理に要する処理時間を予測することが望ましい。下記特許文献１〜３には、バッチ処理に要する処理時間を予測する技術が開示されている。
【０００４】
特許文献１に記載の技術は、対象となるバッチ処理に含まれるジョブごとに処理時間を測定しておき、過去の実績処理時間に基づいてバッチ処理全体に要する処理時間を予測している。特許文献２に記載の技術は、テストデータを用いてジョブを実行したときの処理時間に基づいて、実データでのジョブの処理時間を予測している。特許文献３に記載の技術は、予測した処理時間と実際の処理時間との間の誤差を検出し、この誤差に基づいて処理の終了予定時刻を再計算している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２３０５８４号公報
【特許文献２】特開２００２−２９７４０７号公報
【特許文献３】特開平１１−５３２２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、上述した特許文献１〜３に記載の技術では、例えば、ジョブ実行時にエラーが発生してロールバックした場合、ロールバックにより再処理されたデータの件数を把握することができない。したがって、ロールバックに要した時間を精度良く算出することができないため、エラー発生時における実際の処理時間と予測処理時間との間に乖離が生じてしまう。
【０００７】
本発明は、上述した課題を解決するためになされたものであり、エラーが発生してもバッチ処理に要する処理時間の予測精度を向上させることができる処理時間予測装置、処理時間予測方法および処理時間予測プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の処理時間予測装置は、複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測装置であって、ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出部と、ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定部と、前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出部と、各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定部と、各ジョブの実行時に発生するエラー回数をカウントするカウント部と、前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出部と、前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出部と、を備える。
【０００９】
本発明の処理時間予測方法は、複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測方法であって、ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出ステップと、ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定ステップと、前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出ステップと、各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定ステップと、各ジョブの実行時に発生するエラー回数をカウントするカウントステップと、前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出ステップと、前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出ステップと、を含む。
【００１０】
本発明の処理時間予測プログラムは、上記処理時間予測方法に含まれる各ステップをコンピュータに実行させる。
【発明の効果】
【００１１】
本発明によれば、エラーが発生してもバッチ処理に要する処理時間の予測精度を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態における処理時間予測装置の機能構成を例示するブロック図である。
【図２】ジョブ情報テーブルのデータ構成を例示する図である。
【図３】処理関連情報テーブルのデータ構成を例示する図である。
【図４】予測用情報テーブルのデータ構成を例示する図である。
【図５】バッチ処理を開始する前に実行される処理を説明するためのフローチャートである。
【図６】トランザクション数算出処理の処理手順を説明するためのフローチャートである。
【図７】予測処理時間算出処理の処理手順を説明するためのフローチャートである。
【図８】バッチ処理を開始した後に実行される処理を説明するためのフローチャートである。
【図９】実行状況反映処理の処理手順を説明するためのフローチャートである。
【図１０】予測処理時間再算出処理の処理手順を説明するためのフローチャートである。
【図１１】処理順序調整処理の処理手順を説明するためのフローチャートである。
【図１２】削除対象ジョブ選択処理の処理手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して、本発明に係る処理時間予測装置、処理時間予測方法および処理時間予測プログラムの好適な実施形態について説明する。処理時間予測装置は、複数のジョブを含むバッチ処理の処理時間を予測するコンピュータ装置である。
【００１４】
複数のジョブを含むバッチ処理としては、例えば、以下の４つのジョブを含むバッチ処理がある。（１）ジョブ１；オンライン処理で更新された売り上げデータに基づいて、店舗ごとの売り上げを集計し、各店舗の売り上げ集計テーブルに登録するデータ集計処理。（２）ジョブ２；各店舗の売り上げ集計データと各店舗の商品在庫数とに基づいて、現在の商品在庫数を算出し、各店舗情報テーブルに登録する商品在庫数確認処理。（３）ジョブ３；各店舗の売り上げ集計データと各店舗のこれまでの売り上げ推移データとに基づいて、今後の売れ行きを予測し、最適な商品在庫数を算出する商品売上予測処理。（４）ジョブ４；これまでの売り上げ推移データに基づいて、各店舗の商品注文数を決定する商品注文処理。売り上げ推移データが存在しない場合には、先日までの予測情報を引き継ぎ、先日と同じ在庫数にする。この場合には、今回売り上げた商品数と同数を注文数とする。商品注文処理は、外部に商品を注文するため、決められた日時までに商品を注文する必要がある。
【００１５】
実施形態における処理時間予測装置は、物理的には、例えば、ＣＰＵ（Central Processing Unit）と、記憶装置と、入出力インターフェースとを含んで構成される。記憶装置には、例えば、ＣＰＵで処理されるプログラムやデータを記憶するＲＯＭ（Read Only Memory）やＨＤＤ（Hard Disk Drive）、主として制御処理のための各種作業領域として使用されるＲＡＭ（Random Access Memory）等の要素が含まれる。これらの要素は、互いにバスを介して接続されている。ＣＰＵが、ＲＯＭに記憶されたプログラムを実行し、入出力インターフェースを介して受信されるメッセージや、ＲＡＭに展開されるデータを処理することで、後述する処理時間予測装置における各部の機能を実現することができる。
【００１６】
図１を参照して、実施形態における処理時間予測装置の機能構成について説明する。処理時間予測装置１は、機能的には、例えば、トランザクション数算出部１１と、ジョブ仮実行部１２と、予測処理時間算出部１３と、ジョブ実行部２１と、実行状況反映部２２と、予測処理時間再算出部２３と、処理順序調整部３１と、を有する。
【００１７】
トランザクション数算出部１１は、各ジョブについて、ジョブが実行するトランザクション数を算出する。トランザクション数の算出は、例えば、以下の手順で行うことができる。
【００１８】
最初に、トランザクション数算出部１１は、ジョブ情報テーブル４１や処理関連情報テーブル４２を参照し、ジョブ単位の処理データ数およびトランザクション単位の処理データ数を取得する。続いて、トランザクション数算出部１１は、ジョブ単位の処理データ数をトランザクション単位の処理データ数で除算することで、各ジョブのトランザクション数を算出する。続いて、トランザクション数算出部１１は、算出したトランザクション数を予測用情報テーブル４３に格納する。
【００１９】
図２を参照して、ジョブ情報テーブル４１のデータ構成について説明する。ジョブ情報テーブル４１は、データ項目として、例えば、ジョブＩＤ項目、利用サーバＩＤ項目および利用リソース項目を有する。ジョブＩＤ項目は、ジョブを一意に特定する識別情報を格納する。利用サーバＩＤ項目は、ジョブが利用するサーバを一意に特定する識別情報を格納する。利用リソース項目は、ジョブが利用するデータリソースに関する情報を格納する。上述したジョブ単位の処理データ数は、利用リソース項目に基づいて特定可能なデータリソース（例えばデータベース）から取得することができる。
【００２０】
図３を参照して、処理関連情報テーブル４２のデータ構成について説明する。処理関連情報テーブル４２は、データ項目として、例えば、ジョブＩＤ項目、処理優先度項目、必須先行ジョブ項目、トランザクション単位処理数項目、処理制約項目、処理省略可能フラグ項目、および処理順序項目を有する。
【００２１】
ジョブＩＤ項目は、ジョブを一意に特定する識別情報を格納する。処理優先度項目は、ジョブの処理優先度を格納する。必須先行ジョブ項目は、ジョブの処理を開始する前に処理終了が必須となる先行ジョブのジョブＩＤを格納する。必須先行ジョブが存在しない場合には空欄とする。トランザクション単位処理数項目は、各トランザクションの処理データ数を格納する。処理制約項目は、処理の終了期限を格納する。終了期限の設定が不要な場合には空欄とする。処理省略可能フラグ項目は、ジョブの省略が可能か否かを示すフラグを格納する。処理順序項目は、バッチ処理内でのジョブの実行順序を格納する。
【００２２】
図４を参照して、予測用情報テーブル４３のデータ構成について説明する。予測用情報テーブル４３は、データ項目として、例えば、ジョブＩＤ項目、トランザクション数項目、仮処理時間項目、予測処理時間項目、予測エラー数項目、誤差率項目、および処理状態項目を有する。
【００２３】
ジョブＩＤ項目は、ジョブを一意に特定する識別情報を格納する。トランザクション数項目は、トランザクション数算出部１１により算出されるトランザクション数を格納する。仮処理時間項目は、後述する仮処理時間測定部１２１により測定される仮処理時間（一トランザクション分の処理時間）を格納する。予測処理時間項目は、後述する予測処理時間算出部１３により算出される予測処理時間を格納する。予測エラー数項目は、後述する予測エラー数算出部２２１により算出される予測エラー数を格納する。誤差率項目は、後述する誤差率算出部２２２により算出される予測処理時間の誤差率を格納する。処理状態項目は、ジョブの処理状態を格納する。ジョブの処理状態として、例えば、“ＣＯＭＰＬＥＴＥＤ”、“ＲＵＮＮＩＮＧ”、“ＮＯＴ＿ＲＵＮＮＩＮＧ”等を用いることができる。
【００２４】
図１に示すジョブ仮実行部１２は、各ジョブについて、一トランザクション分の処理を仮実行する。仮実行の処理は、本番の処理ではなく、処理時間の測定を目的とした仮の処理である。したがって、本番の処理に影響を与える箇所にデータを書き込むこと等は行わない。ジョブ仮実行部１２は、仮処理時間測定部１２１を含む。
【００２５】
仮処理時間測定部１２１は、一トランザクション分の処理を仮実行したときに要する時間を測定することで仮処理時間を測定する。仮処理時間測定部１２１は、測定した仮処理時間を、予測用情報テーブル４３の仮処理時間項目に格納する。
【００２６】
予測処理時間算出部１３は、各ジョブが実行するトランザクション数と、一トランザクションあたりの処理時間である仮処理時間とを用いて、ジョブごとに想定される処理時間である予測処理時間を算出する。予測処理時間算出部１３は、算出した予測処理時間を予測用情報テーブル４３の予測処理時間項目に格納する。
【００２７】
ジョブ実行部２１は、処理関連情報テーブル４２の処理順序データに従って、ジョブをロードし、実行する。ジョブ実行部２１は、実処理時間測定部２１１およびカウント部２１２を含む。
【００２８】
実処理時間測定部２１１は、ジョブを実行したときに要する時間を測定することで実処理時間を測定し、後述する実行状況情報テーブル４４の実処理時間項目に格納する。カウント部２１２は、各ジョブの実行時に発生するエラー回数をカウントし、後述する実行状況情報テーブル４４のエラー数項目に格納する。
【００２９】
ここで、実行状況情報テーブル４４は、データ項目として、例えば、ジョブＩＤ項目、実処理時間項目、エラー数項目、および処理結果項目を有する。ジョブＩＤ項目は、ジョブを一意に特定する識別情報を格納する。実処理時間項目は、実処理時間測定部２１１により測定される実処理時間を格納する。エラー数項目は、カウント部２１２によりカウントされるエラー回数を格納する。処理結果項目は、ジョブ実行部２１により実行されるジョブの実行結果の状態を格納する。実行結果の状態として、例えば、正常終了状態、異常終了状態、処理中断状態を用いることができる。
【００３０】
実行状況反映部２２は、ジョブの実行結果の状態が、正常終了状態であるか否かを判定し、正常終了状態である場合には、正常終了したジョブの実行状況を未処理ジョブに反映する処理を実行する。一方、異常終了状態や処理中断状態である場合には、上記未処理ジョブに反映する処理を実行せずに終了する。実行状況反映部２２は、上記未処理ジョブに反映する処理を行う各種機能として、予測エラー数算出部２２１と、誤差率算出部２２２と、を有する。
【００３１】
予測エラー数算出部２２１は、実行状況情報テーブル４４から処理済ジョブに対応するエラー数を取得し、一ジョブあたりのエラー数（エラー数の平均値）を算出することで、未処理ジョブの予測エラー数を算出する。予測エラー数算出部２２１は、算出した予測エラー数を、予測用情報テーブル４３の未処理ジョブに対応する予測エラー数項目に格納する。
【００３２】
誤差率算出部２２２は、予測処理時間の誤差率を算出し、予測用情報テーブル４３の未処理ジョブに対応する誤差率に格納する。誤差率の算出は、例えば、以下の手順で行うことができる。
【００３３】
最初に、誤差率算出部２２２は、予測用情報テーブル４３から処理済ジョブに対応するトランザクション数、予測処理時間および仮処理時間を取得し、実行状況情報テーブル４４から処理済ジョブに対応するエラー数および実処理時間を取得する。続いて、誤差率算出部２２２は、トランザクション数にエラー数を加算することで、実際に処理を行ったトランザクション数を算出する。これは、バッチ処理のエラー対処時に採用されるロールバックでは、エラーが発生すると、エラー発生時に処理をしていたトランザクションの先頭から処理を再開するため、トランザクション数にエラー数を加算することで実際に処理を行ったトランザクション数を算出することができることに因るものである。
【００３４】
続いて、誤差率算出部２２２は、実際に処理を行ったトランザクション数と実処理時間とを用いて、一トランザクションあたりに費やした処理時間の平均値を算出する。続いて、誤差率算出部２２２は、一トランザクションあたりに費やした処理時間の平均値と、仮処理時間との差異に基づいて、予測処理時間の誤差率を算出する。続いて、誤差率算出部２２２は、算出した予測処理時間の誤差率を、予測用情報テーブル４３の未処理ジョブに対応する誤差率項目に格納する。
【００３５】
予測処理時間再算出部２３は、予測用情報テーブル４３から未処理ジョブに対応する予測処理時間および誤差率を取得する。予測処理時間再算出部２３は、取得した予測処理時間および誤差率を用いて、未処理ジョブの予測処理時間を再度算出する。予測処理時間再算出部２３は、算出した予測処理時間を、予測用情報テーブル４３の未処理ジョブに対応する予測処理時間に格納する。
【００３６】
処理順序調整部３１は、ジョブの予測処理時間、ジョブの処理制約およびジョブの処理優先度に基づいて、ジョブの処理順序を調整する。処理順序調整部３１は、判定部３１１、警告出力部３１２およびジョブ除外部３１３を含む。
【００３７】
判定部３１１は、各ジョブの終了予定時刻に基づいて、終了期限を超過するジョブが存在するか否かを判定する。この判定は、例えば、以下の手順で行うことができる。
【００３８】
最初に、処理順序調整部３１は、処理関連情報テーブル４２の処理順序データに従って各ジョブの予測処理時間をマッピングしていくことで、各ジョブの開始予定時刻や終了予定時刻を算出し、処理順序リストを生成する。続いて、判定部３１１は、処理関連情報テーブル４２の処理制約に終了期限が格納されているジョブについて、そのジョブの終了予定時刻が終了期限を超過するか否かを判定する。
【００３９】
警告出力部３１２は、判定部３１１によって終了期限を超過するジョブが存在すると判定された場合に、警告を出力する。警告の出力としては、例えば警告メッセージや警告マークを表示させるための出力、警告音の出力等が該当する。
【００４０】
ジョブ除外部３１３は、判定部３１１によって終了期限を超過するジョブが存在すると判定された場合に、処理関連情報テーブル４２の処理省略可能フラグが“ＹＥＳ”であるジョブをバッチ処理の対象から除外する。処理省略可能フラグが“ＹＥＳ”であるジョブが複数ある場合には、例えば、以下の基準に従って順次除外していくことができる。（１）処理優先度が最も低いジョブを除外対象として選択する。（２）必須先行ジョブの対象に指定されていないジョブを除外対象として選択する。（３）除外対象候補ジョブの予測処理時間と当該除外対象候補ジョブの必須先行ジョブに指定されているジョブの予測処理時間との合計時間が最も長いジョブを除外対象として選択する。
【００４１】
次に、図５〜図１２を参照して、実施形態における処理時間予測装置の動作について説明する。まず、図５を参照して、バッチ処理を開始する前に実行される処理について説明する。
【００４２】
最初に、トランザクション数算出部１１は、トランザクション数算出処理を実行する（ステップＳ１０１）。トランザクション数算出処理の詳細については、後述する。
【００４３】
続いて、仮処理時間測定部１２１は、一トランザクション分の処理を仮実行する仮実行処理を実行し、測定した仮処理時間を予測用情報テーブル４３の仮処理時間項目に格納する（ステップＳ１０２）。
【００４４】
続いて、予測処理時間算出部１３は、予測処理時間算出処理を実行する（ステップＳ１０３）。予測処理時間算出処理の処理手順については、後述する。
【００４５】
続いて、判定部３１１は、上記ステップＳ１０３で算出した予測処理時間に基づいて、各ジョブの終了予定時刻を算出し、終了期限を超過するジョブが存在するか否かを判定する（ステップＳ１０４）。この判定がＮＯである場合（ステップＳ１０４；ＮＯ）には、本動作の処理を終了する。
【００４６】
一方、上記ステップＳ１０４の判定で終了期限を超過するジョブが存在すると判定された場合（ステップＳ１０４；ＹＥＳ）に、警告出力部３１２は、警告を出力する（ステップＳ１０５）。そして、本動作の処理を終了する。
【００４７】
図６を参照して、上述したステップＳ１０１で実行されるトランザクション数算出処理の処理手順について説明する。
【００４８】
最初に、トランザクション数算出部１１は、バッチ処理の対象となるジョブのうち、まだトランザクション数を算出していないジョブが存在するか否かを判定する（ステップＳ２０１）。この判定がＮＯである場合（ステップＳ２０１；ＮＯ）には、トランザクション数算出処理を終了する。
【００４９】
一方、上記ステップＳ２０１の判定で未算出のジョブが存在すると判定された場合（ステップＳ２０１；ＹＥＳ）に、トランザクション数算出部１１は、処理関連情報テーブル４２を参照し、算出対象のジョブに対応するトランザクション単位処理数を取得するとともに、ジョブ情報テーブル４１の利用リソース項目に基づいて特定可能なデータベースからジョブ単位処理数を取得する（ステップＳ２０２）。
【００５０】
続いて、トランザクション数算出部１１は、上記ステップＳ２０２で取得したジョブ単位処理数をトランザクション単位処理数で除算することで、算出対象ジョブのトランザクション数を算出する（ステップＳ２０３）。
【００５１】
続いて、トランザクション数算出部１１は、上記ステップＳ２０３で算出したトランザクション数を予測用情報テーブル４３のトランザクション数項目に格納する（ステップＳ２０４）。そして、処理を上記ステップＳ２０１に移行する。
【００５２】
図７を参照して、上述したステップＳ１０３で実行される予測処理時間算出処理の処理手順について説明する。
【００５３】
最初に、予測処理時間算出部１３は、バッチ処理の対象となるジョブのうち、まだ予測処理時間を算出していないジョブが存在するか否かを判定する（ステップＳ３０１）。この判定がＮＯである場合（ステップＳ３０１；ＮＯ）には、予測処理時間算出処理を終了する。
【００５４】
一方、上記ステップＳ３０１の判定で未算出のジョブが存在すると判定された場合（ステップＳ３０１；ＹＥＳ）に、予測処理時間算出部１３は、予測用情報テーブル４３を参照し、算出対象のジョブに対応する予測用情報を取得する（ステップＳ３０２）。
【００５５】
続いて、予測処理時間算出部１３は、上記ステップＳ３０２で取得した予測用情報に含まれるトランザクション数および仮処理時間を用いて、算出対象の予測処理時間を算出する（ステップＳ３０３）。
【００５６】
続いて、予測処理時間算出部１３は、上記ステップＳ３０３で算出した予測処理時間を予測用情報テーブル４３の予測処理時間項目に格納する（ステップＳ３０４）。そして、処理を上記ステップＳ３０１に移行する。
【００５７】
次に、図８を参照して、バッチ処理を開始した後に実行される処理について説明する。
【００５８】
最初に、ジョブ実行部２１は、処理関連情報テーブル４２の処理順序データに従ってジョブを順次実行するとともに、実処理時間測定部２１１により測定される実処理時間を実行状況情報テーブル４４の実処理時間項目に格納し、カウント部２１２によりカウントされるエラー回数を実行状況情報テーブル４４のエラー数項目に格納する（ステップＳ４０１）。
【００５９】
続いて、実行状況反映部２２は、実行状況反映処理を実行する（ステップＳ４０２）。実行状況反映処理の処理手順については、後述する。
【００６０】
続いて、予測処理時間再算出部２３は、予測処理時間再算出処理を実行する（ステップＳ４０３）。予測処理時間再算出処理の処理手順については、後述する。
【００６１】
続いて、処理順序調整部３１は、処理順序調整処理を実行する（ステップＳ４０４）。そして、本動作の処理を終了する。ここで、処理順序調整処理の処理手順については、後述する。
【００６２】
図９を参照して、上述したステップＳ４０２で実行される実行状況反映処理の処理手順について説明する。
【００６３】
最初に、実行状況反映部２２は、実行状況情報テーブル４４を参照し、処理済みのジョブに対応する実行状況情報を取得する（ステップＳ５０１）。
【００６４】
続いて、実行状況反映部２２は、上記ステップＳ５０１で取得した実行状況情報の処理結果項目に基づいて、ジョブの実行結果の状態が、正常終了状態であるか否かを判定する（ステップＳ５０２）。この判定がＮＯである場合（ステップＳ５０２；ＮＯ）には、実行状況反映処理を終了する。
【００６５】
一方、上記ステップＳ５０２の判定でジョブの実行結果の状態が正常終了状態であると判定された場合（ステップＳ５０２；ＹＥＳ）に、予測エラー数算出部２２１は、実行状況情報テーブル４４から各処理済ジョブに対応するエラー数を取得し、エラー数の平均値を算出し、この算出した平均値を、予測用情報テーブル４３の未処理ジョブに対応する予測エラー数項目に格納（予測エラー数に反映）する（ステップＳ５０３）。
【００６６】
続いて、誤差率算出部２２２は、予測処理時間の誤差率を算出し、この算出した誤差率を、予測用情報テーブル４３の未処理ジョブに対応する誤差率項目に格納（誤差率に反映）する（ステップＳ５０４）。そして、実行状況反映処理を終了する。
【００６７】
図１０を参照して、上述したステップＳ４０３で実行される予測処理時間再算出処理の処理手順について説明する。
【００６８】
最初に、予測処理時間再算出部２３は、まだ予測処理時間を再算出していない未処理ジョブが存在するか否かを判定する（ステップＳ６０１）。この判定がＮＯである場合（ステップＳ１０１；ＮＯ）には、予測処理時間再算出処理を終了する。
【００６９】
一方、上記ステップＳ６０１の判定で未再算出の未処理ジョブが存在すると判定された場合（ステップＳ６０１；ＹＥＳ）に、予測処理時間再算出部２３は、予測用情報テーブル４３を参照し、再算出対象のジョブに対応する予測用情報を取得する（ステップＳ６０２）。
【００７０】
続いて、予測処理時間再算出部２３は、上記ステップＳ６０２で取得した予測用情報に含まれる予測処理時間および誤差率を用いて、再算出対象ジョブの予測処理時間を再度算出する（ステップＳ６０３）。
【００７１】
続いて、予測処理時間再算出部２３は、上記ステップＳ６０３で算出した予測処理時間を、予測用情報テーブル４３の再算出対象ジョブに対応する予測処理時間項目に格納（予測処理時間に反映）する（ステップＳ６０４）。そして、処理を上記ステップＳ６０１に移行する。
【００７２】
図１１を参照して、上述したステップＳ４０４で実行される処理順序調整処理の処理手順について説明する。
【００７３】
最初に、処理順序調整部３１は、処理関連情報テーブル４２の処理順序データ項目を参照して、未処理ジョブの処理順序リストを生成して保存する（ステップＳ７０１）。
【００７４】
続いて、判定部３１１は、処理順序リストにある未処理ジョブのうち、処理関連情報テーブル４２の処理制約項目に終了期限が格納されているジョブについて、その未処理ジョブの終了予定時刻が終了期限を超過しているか否かを判定する（ステップＳ７０２）。この判定がＮＯである場合（ステップＳ７０２；ＮＯ）には、後述するステップＳ７１０に処理を移行する。
【００７５】
一方、上記ステップＳ７０２の判定で終了予定時刻が終了期限を超過している未処理ジョブが存在すると判定された場合（ステップＳ７０２；ＹＥＳ）に、警告出力部３１２は、警告を出力する（ステップＳ７０３）。
【００７６】
続いて、ジョブ除外部３１３は、削除対象ジョブ選択処理を実行する（ステップＳ７０４）。削除対象ジョブ選択処理の処理手順については、後述する。
【００７７】
続いて、判定部３１１は、削除対象ジョブが選択されたか否かを判定する（ステップＳ７０５）。この判定がＮＯである場合（ステップＳ７０５；ＮＯ）に、警告出力部３１２は、削除対象ジョブが存在しない旨のメッセージを出力し（ステップＳ７０６）、後述するステップＳ７１０に処理を移行する。
【００７８】
一方、上記ステップＳ７０５の判定で削除対象ジョブが選択されたと判定された場合（ステップＳ７０５；ＹＥＳ）に、ジョブ除外部３１３は、保存されている処理順序リストから、選択された削除対象ジョブを除外し（ステップＳ７０７）、処理順序調整部３１は、処理順序リストを再生成して上書き保存する（ステップＳ７０８）。
【００７９】
続いて、判定部３１１は、処理順序リストにある未処理ジョブのうち、処理関連情報テーブル４２の処理制約項目に終了期限が格納されているジョブについて、その未処理ジョブの終了予定時刻が終了期限を超過しているか否かを判定する（ステップＳ７０９）。この判定がＹＥＳである場合（ステップＳ７０９；ＹＥＳ）には、上述したステップＳ７０４に処理を移行する。
【００８０】
一方、上記ステップＳ７０９の判定で終了予定時刻が終了期限を超過している未処理ジョブが存在しないと判定された場合（ステップＳ７０９；ＮＯ）に、処理順序調整部３１は、保存されている処理順序リストを出力する（ステップＳ７１０）。そして、処理順序調整処理を終了する。
【００８１】
図１２を参照して、上述したステップＳ７０４で実行される削除対象ジョブ選択処理の処理手順について説明する。
【００８２】
最初に、ジョブ除外部３１３は、処理順序リストにある未処理ジョブのうち、処理関連情報テーブル４２の処理省略可能フラグ項目に“ＹＥＳ”が格納されているジョブが存在するか否かを判定する（ステップＳ８０１）。この判定がＮＯである場合（ステップＳ１０１；ＮＯ）に、ジョブ除外部３１３は、エラーメッセージを出力し（ステップＳ８１１）、削除対象ジョブ選択処理を終了する。
【００８３】
一方、上記ステップＳ８０１の判定で処理省略可能フラグ項目に“ＹＥＳ”が格納されているジョブが存在すると判定された場合（ステップＳ８０１；ＹＥＳ）に、ジョブ除外部３１３は、処理省略可能フラグ項目に“ＹＥＳ”が格納されているジョブに対応する処理関連情報を処理関連情報テーブル４２から取得する（ステップＳ８０２）。
【００８４】
続いて、ジョブ除外部３１３は、上記ステップＳ８０２で取得した処理関連情報に基づいて、削除対象候補となるジョブが複数存在するか否かを判定する（ステップＳ８０３）。この判定がＮＯである場合（ステップＳ８０３；ＮＯ）に、ジョブ除外部３１３は、上記ステップＳ８０２で取得した処理関連情報に対応するジョブを削除対象ジョブとして出力し（ステップＳ８１０）、削除対象ジョブ選択処理を終了する。
【００８５】
一方、上記ステップＳ８０３の判定で削除対象候補となるジョブが複数存在すると判定された場合（ステップＳ８０３；ＹＥＳ）に、ジョブ除外部３１３は、各ジョブに対応する処理関連情報に含まれる処理優先度を比較し、処理優先度が最も低いジョブを削除対象候補ジョブとして選択する（ステップＳ８０４）。
【００８６】
続いて、ジョブ除外部３１３は、上記ステップＳ８０４で選択した削除対象候補ジョブが複数存在するか否かを判定する（ステップＳ８０５）。この判定がＮＯである場合（ステップＳ８０５；ＮＯ）に、ジョブ除外部３１３は、上記ステップＳ８０４で選択した削除対象候補ジョブを削除対象ジョブとして出力し（ステップＳ８１０）、削除対象ジョブ選択処理を終了する。
【００８７】
一方、上記ステップＳ８０５の判定で削除対象候補ジョブが複数存在すると判定された場合（ステップＳ８０５；ＹＥＳ）に、ジョブ除外部３１３は、複数存在する削除対象候補ジョブのうち、処理関連情報テーブル４２の必須先行ジョブ項目において必須先行ジョブに指定されていないジョブのみを、削除対象候補ジョブとして選択する（ステップＳ８０６）。
【００８８】
続いて、ジョブ除外部３１３は、上記ステップＳ８０６で削除対象候補ジョブが選択されたか否かを判定する（ステップＳ８０７）。この判定がＮＯである場合（ステップＳ８０７；ＮＯ）に、ジョブ除外部３１３は、エラーメッセージを出力し（ステップＳ８１１）、削除対象ジョブ選択処理を終了する。
【００８９】
一方、上記ステップＳ８０７の判定で削除対象候補ジョブが選択されたと判定された場合（ステップＳ８０７；ＹＥＳ）に、ジョブ除外部３１３は、選択された削除対象候補ジョブが複数存在するか否かを判定する（ステップＳ８０８）。この判定がＮＯである場合（ステップＳ８０８；ＮＯ）に、ジョブ除外部３１３は、上記ステップＳ８０６で選択した削除対象候補ジョブを削除対象ジョブとして出力し（ステップＳ８１０）、削除対象ジョブ選択処理を終了する。
【００９０】
一方、上記ステップＳ８０８の判定で削除対象候補ジョブが複数存在すると判定された場合（ステップＳ８０８；ＹＥＳ）に、ジョブ除外部３１３は、複数存在する削除対象候補ジョブのうち、当該削除対象候補ジョブの予測処理時間と当該削除対象候補ジョブの必須先行ジョブに指定されているジョブの予測処理時間との合計時間を算出し、その合計時間が最も長いジョブを削除対象候補ジョブとして選択する（ステップＳ８０９）。
【００９１】
続いて、ジョブ除外部３１３は、上記ステップＳ８０９で選択した削除対象候補ジョブを削除対象ジョブとして出力し（ステップＳ８１０）、削除対象ジョブ選択処理を終了する。
【００９２】
上述したように、実施形態における処理時間予測装置１によれば、ジョブを実際に実行する前に、一トランザクション分の処理を仮実行することで、処理時間を予測することができるため、実処理に与える影響を最小限に抑えたうえで未処理ジョブの予測処理時間を算出することが可能となる。
【００９３】
また、ジョブを実際に実行したときの実行状況情報に基づいて予測処理時間の誤差率を算出し、予測用情報に反映してから予測処理時間を再算出することができるため、予測処理時間に実処理時間との誤差を反映させることが可能となる。
【００９４】
さらに、ジョブを実際に実行したときの実行状況情報に基づいて予測エラー数を算出し、予測用情報に反映してから予測処理時間を再算出することができるため、予測処理時間に実際のエラー状況を反映させることが可能となる。
【００９５】
それゆえに、エラーが発生してもバッチ処理に要する処理時間の予測精度を向上させることが可能となる。
【００９６】
[変形例]
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【００９７】
例えば、上述した実施形態では、処理順序調整部３１による処理順序調整処理を、バッチ処理開始後の処理中で実行しているが、バッチ処理開始前の処理中で実行してもよい。これにより、バッチ処理開始前の状態で終了期限を超過するジョブが存在する場合には、省略可能なジョブ等をバッチ処理から除外することや、警告を出力することが可能となる。
【００９８】
また、上述した実施形態では、処理順序調整後の処理順序リストを出力しているが、これに限定されない。例えば、処理順序調整処理により調整された処理順序を動的に反映（更新）してもよい。
【００９９】
また、上述した実施形態では、エラー発生時のロールバック処理において、エラー発生時に処理をしていたトランザクションの先頭から処理を再開することを前提にしているが、エラー発生時に処理をしていたトランザクションを再実行せずに、スキップするジョブも存在する。このようなジョブが存在する場合には、予測処理時間の誤差率を算出する際に、トランザクション数に対してエラー数を加算しない処理を追加することで対応できる。具体的には、ジョブの実行状況を監視し、ジョブがエラー発生時のトランザクションをスキップする場合には、トランザクション数に対してエラー数を加算しない機能を追加することで対応できる。
【０１００】
また、上述した実施形態では、予測エラー数算出部２２１が予測エラー数を算出する際に、一ジョブあたりのエラー数（エラー数の平均値）を算出しているが、これに限定されない。例えば、トランザクション処理の成功率（エラー数／成功したトランザクション数）をジョブごとに算出することで、予測エラー数を算出してもよい。
【０１０１】
また、上述した実施形態では、ジョブ仮実行部１２がジョブを仮実行する際に、各ジョブについて一トランザクション分の処理を仮実行しているが、仮実行の処理は、一トランザクション分のデータが全て揃うまで待機する必要はない。例えば、一トランザクション分のデータ量が多く、一データの処理時間が長い場合には、一トランザクション分のデータが全て揃ってから仮実行の処理を開始すると、本番の処理に影響を与えてしまうことも考え得る。したがって、このような場合には、仮実行の処理で取り扱う一データが揃った時点で仮実行の処理を開始させることとしてもよい。この場合には、仮実行の処理で取り扱う一データが揃ったか否かを監視するデータ監視サーバを設けることとしてもよい。これにより、本番の処理に影響を与えることなく、仮実行を行うことが可能となる。
【０１０２】
上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【０１０３】
（付記１）  複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測装置であって、ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出部と、ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定部と、前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出部と、各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定部と、各ジョブの実行時に発生するエラー回数をカウントするカウント部と、前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出部と、前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出部と、を備えることを特徴とする処理時間予測装置。
【０１０４】
（付記２）  前記予測処理時間を用いて各ジョブが終了する予定となる時刻である予測終了時刻を算出し、当該予測終了時刻が、予めジョブごとに設定可能な終了期限を超過するか否かを判定する判定部と、いずれかの前記予測終了時刻が前記終了期限を超過する場合に、警告を出力する警告出力部と、をさらに備えることを特徴とする付記１記載の処理時間予測装置。
【０１０５】
（付記３）  前記いずれかの前記予測終了時刻が前記終了期限を超過する場合に、予めジョブごとに設定可能な省略可能ジョブに該当するジョブをバッチ処理の対象から除外するジョブ除外部を、さらに備えることを特徴とする付記２記載の処理時間予測装置。
【０１０６】
（付記４）  複数のジョブを含むバッチ処理に要する処理時間を予測する処理時間予測方法であって、ジョブ単位の処理データ数およびトランザクション単位の処理データ数を用いて、ジョブごとのトランザクション数を算出するトランザクション数算出ステップと、ジョブごとに一トランザクション分の処理を仮実行し、ジョブごとの一トランザクション分の処理時間である仮処理時間を測定する仮処理時間測定ステップと、前記トランザクション数および前記仮処理時間を用いて、ジョブごとに想定される処理時間である予測処理時間を算出する予測処理時間算出ステップと、各ジョブの実行時に要する処理時間である実処理時間を測定する実処理時間測定ステップと、各ジョブの実行時に発生するエラー回数をカウントするカウントステップと、前記トランザクション数、前記実処理時間および前記エラー回数を用いて、前記予測処理時間の誤差率を算出する誤差率算出ステップと、前記誤差率および前記仮処理時間を用いて、未処理ジョブの前記予測処理時間を再度算出する予測処理時間再算出ステップと、を含むことを特徴とする処理時間予測方法。
【０１０７】
（付記５）  付記４に記載の各ステップをコンピュータに実行させるための処理時間予測プログラム。
【符号の説明】
【０１０８】
１…処理時間予測装置、１１…トランザクション数算出部、１２…ジョブ仮実行部、１３…予測処理時間算出部、２１…ジョブ実行部、２２…実行状況反映部、２３…予測処理時間再算出部、３１…処理順序調整部、４１…ジョブ情報テーブル、４２…処理関連情報テーブル、４３…予測用情報テーブル、４４…実行状況情報テーブル、１２１…仮処理時間測定部、２１１…実処理時間測定部、２１２…カウント部、２２１…予測エラー数算出部、２２２…誤差率算出部、３１１…判定部、３１２…警告出力部、３１３…ジョブ除外部。
【図１】
0005614300.tif 000002
【図２】
0005614300.tif 000003
【図３】
0005614300.tif 000004
【図４】
0005614300.tif 000005
【図５】
0005614300.tif 000006
【図６】
0005614300.tif 000007
【図７】
0005614300.tif 000008
【図８】
0005614300.tif 000009
【図９】
0005614300.tif 000010
【図１０】
0005614300.tif 000011
【図１１】
0005614300.tif 000012
【図１２】
0005614300.tif 000013