| # 並列処理の性能調整 本付録では、並列処理を使用して CI プロセス (tccri7203m000) セッションを実行するときに必要な性能調整について説明します。 CI プロセス (tccri7203m000) の実際の処理速度は、利用可能な CPU 数、アプリケーションおよびデータベースサーバの設定などの多くの要素によります。テーブルに含まれるデータの量も、主要な要素の 1 つです。一般的に、以下のテーブルに多くのデータ量が含まれています。 統合取引 (tfgld482) 調整データ (tfgld495) ファイナライズ済取引 (tfgld106) 仕掛品および在庫処理 (工程管理) (ticst300) プロジェクト管理仕掛品取引および在庫処理 (tipcs300) 販売オーダ履歴 (tdsls450、tdsls451、および tdsls456) Infor LN FP5 およびそれ以降では、RDBMS からテーブルを直接更新する機能が利用可能です。この機能はポーティングセット 8.7a.03 およびそれ以降に導入されています。 RDBMS から直接更新するのは、bshell 経由で更新するより効率的です。その違いは、すべての処理が RDBMS に委譲されている点です。この更新のタイプは、自国通貨額や為替レートの再計算が必要ないテーブルまたはデータに限定されます。これはたとえば、レポート通貨の自国通貨額が現地通貨の額になる場合などが該当します。他の例としては、自国通貨額の削除があります。これはたとえば、レポート通貨が削除された、または通貨システムが標準通貨システムに変更された際にレポート通貨がロジスティックテーブル内にある場合などが該当します。 CI プロセス (tccri7203m000) セッションでは、RDBMS から直接更新が可能かどうかをチェックします。RDBMS からの直接更新が利用できない場合、セッションでは通常の (遅い) 更新を利用します。 RDBMS 更新を利用するには、次の条件を満たす必要があります。 CI レート (tccri7100m000) セッションで、基準通貨で表示フィールドの値が、対応する為替レート (tcmcs0108m000) セッションのフィールドと一致する必要があります。たとえば、ユーロを使用する会社では、変換の間に基準通貨での表示が変わらない場合、EUR (自国) から取引通貨への為替レートはそのままになります。 注意: これは、為替レートセッションの各基準通貨のすべてのタイプに適用されます。 技術上の制限 以下の制限があります。 DB のドライバはレベル 2 ドライバでなければならない 次のテーブルは監査もミラーも行われない: tfgld495、tfgld482、tdsls451、および tdsls456 バージョン 8.7a.03 またはそれ以降のポーティングセットを使用する必要があります。ポーティングセットの TIV レベルは 1744 以降である必要があります。コマンドラインで $BSE/bin/bshell6.2 –V (Windows では %BSE\bin\ntbshell –V を使用) を実行すると、この数字を確認できます。 CI プロセス (tccri7203m000) セッションで通貨初期化プロセスが開始した場合、このセッションは変換クラスタおよび関連する会社にアクセスし、どのタイプの変換が必要かを決定します。RDBMS からの直接更新が利用可能な場合、一部のデータがクラスタ会社(tccri725) および CI クラスタ変換テーブル更新グループ (tccri726) テーブルにより CI 変換テーブルで生成されます。 注意 CI クラスタ変換テーブル更新グループ (tccri726) はクラスタ会社別 CI 変換テーブル (tccri7125m000) セッション内の統合取引 (tfgld482) の入力のためだけに生成されます。 CI プロセス (tccri7203m000) が RDBMS から直接テーブルを更新する場合、クラスタ会社別 CI 変換テーブル (tccri7125m000) で一括更新フィールドが選択されます。 統合取引 (tfgld482) テーブルは、複数の財務会社に属する取引を含めることができます。RDBMSからの直接更新を処理できる統合取引は、更新グループにグループ化されます。1 つの更新グループの取引は 1 つの RDBMS 更新に変換されます。統合取引 (tfgld482) を RDBMS から直接更新せずに変換する必要がある場合でも (同様に)、テーブル変換は分割できます。この方法で、テーブルの従来の更新は並列処理を使用して処理できます。 RDBMS からの直接更新が適用できない場合にのみ、調整データ (tfgld495) を分割する必要があります。これはたとえば、自国通貨額や為替レートの再計算が必要な場合が該当します。 注意 調整データ (tfgld495) の変換が分割された場合、RDBMS からの直接更新ではテーブルは更新されません。 ファイナライズ済取引 (tfgld106) テーブルは並列処理を使用して変換されます。RDBMS からの直接更新はサポートされません。 調整例 この例が該当するのは、RDBMS から直接更新されず、かつクラスタ会社別 CI 変換テーブル (tccri7125m000) で分割できる変換タスクです。 並行処理での内部変換は、会社ごとの通貨設定によって RDBMS からの直接更新を伴う変換と伴わない変換があります。 3 社のデータを 9 つの並列処理の bshell を使用して変換するとします。この画像は、3 社のこの状況を会社ごとに異なる色で表しています。 タスク 1.1 で変換されたテーブルは非常に大きいです。同時に、他の 3 つの大きなテーブル (2.1、2.2、および 3.1) も変換されます。大きな変換タスク 1.1 が分割できれば、6 つの bshell がタスク 1.1 を処理し、その間に 3 つの bshell がタスク 2.1、2.2、および 3.1 を処理するよう決定できます。タスク 1.1 の分割後、より小さいタスク (紫色) は タスク 1.1 を処理する 6 つのより大きなタスクの後に回されます。 たとえばテーブル 2.3 および 2.4 の変換を分割できれば、同じ手法を使用できます。テーブル 2.3 を 2 つの bshell で並列処理し、テーブル 2.4 を 3 つの bshell で並列処理すると、まだ残りの並列 bshell がより小さいタスク (緑色) を同時に処理する十分な余力があります。 タスクの分割後、並行処理の負担はよりバランスが取れています。 合計経過時間は 28 時刻単位から 17 時刻単位に短縮されました。 CI プロセス (tccri7203m000): テスト変換と実変換 シミュレーションモードでは、RDBMS による直接更新のデータベース処理がテストされます。この更新のタイプは調整データ (tfgld495)、統合取引 (tfgld482)、販売オーダ履歴ライン (tdsls451)、および販売オーダ履歴納入ライン(tdsls456) 内の変換で利用できます。テストモードでは、処理はロールバックされます。これは、実変換での実際の処理よりも非常に長い時間がかかることがあります。 従来の変換ロジックでは、テスト変換中はテーブルデータの更新は行われません。これらのテーブルは、テスト変換中はより短い時間で処理されますが、実変換での処理はより時間がかかることに注意してください。 重要 通貨初期化の際、CI プロセス (tccri7203m000) セッションをテスト変換のために使用している場合でも、変換クラスタの会社内で他のユーザや処理を有効にしてはなりません。 テーブルロックや、コミットされていない処理の読み取りを防ぐには、以下に注意してください。 テスト変換の際、RDMBS から直接更新すると、テストされたがコミットされていない大きな処理になります。これは、調整データ (tfgld495)、統合取引 (tfgld482)、販売オーダ履歴ライン (tdsls451)、および販売オーダ履歴納入ライン(tdsls456) でテーブルロックを引き起こすことがあります。 SQLサーバ: デフォルトでは、データベースドライバは共有ロック、および更新や削除のための排他的ロックを防ぐため、｢非コミット読み取り (Read Uncomitted)｣ 分離レベルを使用します。その結果、(テスト) 変換の際、他のユーザまたはプロセスが、調整データ (tfgld495)、統合取引 (tfgld482)、販売オーダ履歴ライン (tdsls451)、および販売オーダ履歴納入ライン(tdsls456) でコミットされていない処理を読み取ることがあります。詳細は、次の情報を参照してください: SQL サーバ データベースドライバの Infor エンタープライズサーバ技術参照ガイド (U8173 JA) Oracle 設定 RDBMS からの直接更新は、大きな処理になります。そのため、大きな取り消しテーブルスペースが必要となります。LN では、32G の取り消しテーブルスペースでの動作を検証しています。取り消しテーブルスペースのデータファイルを、たとえば 1 回につき 8GB まで自動的に拡張するよう設定することをお勧めします。この設定は、ORA-1555 (スナップショットが古すぎる) エラーの発生を防ぐ場合に役立ちます。最大データファイルサイズに注意してください。 取り消しテーブルスペースのサイズが十分かどうかを予測することは容易ではありません。CI プロセス (tccri7203m000) の実行時、LN のイベントビューアのログで、ORA-1555 エラーを探すことをお勧めします。 一般的に、クエリーの性能を高めるために、Oracle データベースは適切な調整を必要とします。 LN では、LN 環境に$BSE/lib/default/db_resource ファイル経由で以下の設定を適用して動作を検証しています。 `ora_init:0101000` `ora_max_array_fetch:100` `ora_max_array_insert:100` `ora_alter_session`: " `_optim_peek_user_binds` "= `false` に設定 変換のため、バッチベースのデータベースリソースに、上記の行をマージすることを検討してください。 いくつかの実装では、Oracle の隠しパラメータ (いわゆるアンダースコアパラメータ) に非デフォルト値が適用されています。これらの設定はクエリーの実行計画に影響することがあります。これらをデフォルトにリセットすることを検討してください。これは、$BSE//lib/defaults/db_resource ファイルに `ora_alter_session` プロパティを追加することにより可能となります。 SQL サーバ設定 通貨初期化中は、LN データベースのロギングを簡易に変更し、通貨初期化後に完全なバックアップを作成することを検討してください。 配列取得が可能になるよう $BSE/lib/default/db_resource ファイルを設定し、取得サイズを 100 に設定します。 DB2 設定 配列取得が可能になるよう $BSE/lib/default/db_resource ファイルを設定し、取得サイズを 100 に設定します。 |