Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Added |../../index.htm#lansa/set_session_value.htm]
現在地:

Anchor
_Toc130907414
_Toc130907414
9.195 SET_SESSION_VALUE

注意: 9.1 組み込み関数の規則      &<a href="bifcat4_01.htm"&>利用オプション&</a&>利用オプション
この組み込み関数を使用すると、Visual LANSAのセッション値を実行アプリケーションによって動的に変更することができます。
セッション値への変更は、そのセッション(X_RUNコマンド)が実行を完了すると無効になることに注意してください。
詳細は、&<a href="depb3_0005.htm"&>「標準X_RUNパラメータ」&</a&>を参照してください。 「標準X_RUNパラメータ」を参照してください。
 
引数

番号

タイプ

必須/任意

記述

最小長

最大長

最小小数桁数

最大小数桁数

1

A

必須

設定またはリセットされるセッション値の名前。現在、この組み込み関数によって次のセッション値を設定またはリセットすることができます。
USER:現在のユーザー - IBM iでは変更できません。USERを設定すると、USEX (サーバーへの接続時のデフォルト・ユーザーID)も設定されます。「セッション値USERも設定されます。「セッション値USER=、GUSR=、およびUSEXに関する技術上の注記 」を参照してください。
GUSR:現在のグループ・ユーザー - IBM iでは変更できません。
USER_AUDIT:ユーザー編集スタンプで使用されるユーザー。IBM iで明示的に設定されている必要があります。 Visual LANSAで変更しても、スーパーサーバー・アプリケーション内でIBM iは更新されません。
PRTR:現在のプリンター
PPTH:プリンター・ファイル用の現在の完全修飾ディレクトリ
JOBPTY:ジョブ待ち行列の優先順位
DBMS_OPTIMIZE:大量のDBMSアクティビティの最適化
CONNECT_PARTITION: CONNECT_SERVER組み込み関数によって使用されるデフォルトの区画
DPTH:エミュレートされたIBM i データ待ち行列が作成/アクセスされるディレクトリ
EXPS:オブジェクト・セキュリティ・レコードのインポート時に実行されるアクション
HELP:使用するヘルプ・システム
HLPF:使用するヘルプ・ファイル
HMJB:現在のアプリケーションがホスト・モニターのジョブであるかどうかを識別します。YまたはN。LANSA開発チーム専用に予約されています。
LANG:現在実行中の言語を変更します。このセッション値には、LANSAの内部作業に関する詳しい知識が必要なため、LANSA開発チームによって作成されたアプリケーションだけに使用が制限されます。
ITRO などすべてのトレース・パラメータ。これは、問題が発生したときだけトレースを有効にする場合に役立ちます。これによって、トレース・ファイルのサイズを最小限に抑えることができます。
PSRA =:一次サーバー経路権限。PSRA=Yを設定することによって、権限チェックがサーバーにルーティングされることを示します。 このコマンドを使用して、実行中に値を設定します。値の設定は、接続を定義して確立する前に行ってください(X_RUN パラメータ詳細の「&<a href="depb3_0165.htm"&>PSRA PSRA (プライマリ・サーバー・ルート証明機関)&</a&>」に記載されている注意点を参照してください」に記載されている注意点を参照してください)。
PSRR:一次サーバー経路リポジトリ。PSRR=Y(デフォルト)を設定することによって、リポジトリのデータがローカルで取得できない場合、そのデータを取得するために要求がサーバーに送信されることを示します。 このコマンドを使用して、実行中に値を設定します。値の設定は、接続を定義して確立する前に行ってください(X_RUN パラメータ詳細の(a href="depb3_0000.htm")「&<a href="depb3_0165.htm"&>PSRA PSRA (プライマリ・サーバー・ルート証明機関)&</a&>」に記載されている注意点を参照してください」に記載されている注意点を参照してください)。
UDEF:スペースを含むユーザー定義の値(最大256バイト)。値にスペースが含まれている場合、または埋め込み引用符を使用する場合は、引用符で囲んでください。この場合、使用可能な長さは254バイトになります。注:埋め込み引用符はすべて一重引用符でなければなりません。二重引用符を使用すると、送信されたジョブが失敗します。
WPEN、 WPPN、WPPS、WPPD、WPFD、WPDF、WPDS、WPFO、WPASなどのWindowsの拡張印刷パラメータをこのパラメータで指定することができます。引数2で指定する値は、コマンド行でWindowsの拡張印刷パラメータを使用する際に適用されるものと同じ規則に従わなければなりません((a href="depb3_0090.htm")「Windows拡張印刷パラメータ」</a>を参照してください)。
XCMD:パスワードなどの特定パラメータ値を隠します。このパラメータは、設定後に送信されたジョブに対してのみアクティブになります。
CIPH: LANSAからOPenSSLを呼び出す際に使用する対称鍵暗号

1

50

 

 

2

A

必須

セッション値が設定またはリセットされる値。詳細については、以下の「技術上の注記」を参照してください。

1

256

 

 

...

  • このセッション値は、このジョブ(現在実行中のジョブ)から投入されたジョブの待ち行列の優先順位を制御するために使用します。x_run環境が起動している場合、このデフォルトは5に設定されます。この値は、IBM iのバッチ・ジョブ待ち行列とサブシステムのエミュレーションでのみ使用してください。また、これ以外のコンテキストで使用しても意味がありません。
  • JOBPTY =に指定する値は、0 -> 9の範囲の整数値である必要があります。最も低いJOBPTY値で投入されたジョブが、エミュレートされたジョブ待ち行列から最初に実行されます。 JOBPTY値が等しいジョブは、到着順に実行されます。
  • この機能を使用する前に、『Visual LANSA アプリケーションの配布ガイド』の&<a href="depb7_0005.htm"&>「IBM i ジョブ待ち行列エミュレーション」&</a&>をお読みください。「IBM i ジョブ待ち行列エミュレーション」をお読みください。

セッション値CONNECT_PARTITION=に関する技術上の注記

...

  • セッション値DBMS_OPTIMIZEは、大量または複雑なDBMSトランザクションを最適化する方法を指定するために使用します。 このオプションを適切に使用することによって、大量または複雑なDBMSアクティビティのパフォーマンスを大幅に向上することができます。 この値パラメータは、大文字で指定する必要があり、次のように設定されます。

    BEGIN_SYNC_nnnn

    複雑なDBMSアクティビティの開始を指定し、DBMS最適化モードをオンに切り替えます。「ハード」コミットは、"nnnn"回の「ソフト」同期ポイントの呼び出しごとに実行されます。

    SYNC_POINT

    複雑なDBMSアクティビティの「ソフト」同期ポイントを指定します。ソフト同期ポイントは、「最適化された」コミット制御の境界に相当します。

    END_SYNC

    複雑なDBMSアクティビティの終了を指定し、DBMS最適化モードをオフに切り替えます。

    DBMS_OPTIMIZEの使用法は、例をもとに説明します。
    次の単純なRDMLファンクションについて考えてみます。
    begin_loop from(1) to(2000) 
           insert fields(......) to_file(testfile) 
    end_loop
    通常の環境では、このファンクションは自動コミットを使用し、1回の挿入ごとにDBMSコミット操作を実行します。
    通常、多くのDBMSコミット操作は非常に低速です。コミットは、このようなアプリケーション(すなわち、同じ操作を5回や10回ではなく数千回も繰り返すアプリケーション)のパフォーマンスに非常に大きく影響する可能性があります。
    ファンクションを次のように変更します。
    use set_session_value ( DBMS_OPTIMIZE BEGIN_SYNC_100 )
    begin_loop from(1) to(2000)
       insert fields(......) to_file(testfile)
       use set_session_value ( DBMS_OPTIMIZE SYNC_POINT )
    end_loop
    use set_session_value ( DBMS_OPTIMIZE END_SYNC )
    これによって、このファンクションは以前より速く実行される可能性があります。DBMS_OPTIMIZE操作によって、基となるOAM(オブジェクト・アクセス・モジュール)がトランザクションをより適切に解析し、それによってトランザクションを最適化できるようになります。
    パフォーマンスが向上する最大の理由は、「ソフト」SYNC_POINTが100回実行されるごとに、「ハード」、つまり実際のDBMSコミット操作が発行されるためです。このため、BEGIN_SYNC_100という値が使用されています。これによって、DBMSトランザクション全体の処理が速くなります。
    もう1つの例として、次の「バッチ」形式のファンクションを挙げます。
    select fields(.....) from_file(customer) where(.......)
       select fields(.....) from_file(orders) with_key(customer)
           call *direct calculate
           select fields(.....) from_file(items) with_key(orderno) 
                  update fields(.....) in_file(items) 
           endselect 
           update fields(.....) in_file(orders) 
      endselect 
    endselect
    このバッチ形式のプログラムを次のように変更することによって、そのパフォーマンスを向上させることができます。
    use set_session_value ( DBMS_OPTIMIZE BEGIN_SYNC_20 )
     select fields(.....) from_file(customer) where(.......)
       select fields(.....) from_file(orders) with_key(customer) 
         call *direct calculate 
         select fields(.....) from_file(items) with_key(orderno)
               update fields(.....) in_file(items) 
       endselect 
       update fields(.....) in_file(orders) 
     endselect 
    use set_session_value ( DBMS_OPTIMIZE SYNC_POINT ) endselect
    use set_session_value ( DBMS_OPTIMIZE END_SYNC )
    次に、DBMS_OPTIMIZEを使用するときに理解しておく必要がある項目および従う必要があるルールを示します。
    BEGIN_SYNC_nnnn
  • 大文字で指定する必要があります。
  • BEGIN_SYNC_nnnn が現在のジョブですでにアクティブな場合、異常終了します。BEGIN_SYNC_nnnn操作をネストすることはできません。
  • 指定された"nnnn"値に同期「トリガー」を設定します。"nnnn"は、1から1000までの有効な整数でなければなりません。 "nnnn"を1に設定すると、パフォーマンスが向上する可能性は低くなります。それは、SYNC_POINTが実行されるごとにコミット操作が発行されるためです。
  • 同期ポイントの「カウンター」をゼロに設定します。
  • DBMS 最適化モードをオンに切り替えます。
  • すべての「自動コミット」オプションをオフに切り替えます。すべてのDBMSテーブルは、そのテーブルの定義に関係なく、完全に手動コミットによって制御されます。手動コミットは、次の場合に発行されます。
  • ·    SYNC    SYNC_POINT がトリガー・レベルに到達した場合
  • ·    END    END_SYNC が実行された場合
  • ·    RDML     RDML ファンクションによってCOMMIT操作が発行された場合
  • DBMS トランザクションの正常終了を示すために必ず実行されるEND_SYNC操作が必要です。
  • コミット制御の境界のポイントを指定するSYNC_POINT操作を指定することができます。SYNC_POINTが指定されていない場合、END_SYNC操作が1つのコミット制御の境界として機能します。
  • 通常、"nnnn" の値が大きくなるほど、パフォーマンスが向上します(DBMSおよびジャーナルの制限内で)。ただし、500を超える値は一般的ではありません。値が大きくなるほど、保持/ロックされるシステム・リソースが増え、ロールバック・イベントが発生したときに失われるデータの量が増加します。
  • コミット境界を確定するため、およびパフォーマンスを最適化するために、単純かつ適切な方法でSYNC_POINTとEND_SYNCを使用してください。BEGIN_SYNC、SYNC_POINT、およびEND_SYNC操作を複数のファンクションにまたがって、複雑な呼び出しスタックで使用することは避けてください。すべての操作を1つのファンクションに限定し、単純で適切に区切られた境界を維持するようにしてください。
  • 複数の異なるRDMLファンクションとファンクション呼び出しが伴う複雑な呼び出しスタックで使用しないでください。この主な理由は、呼び出されたファンクションがCOMMITを発行(またはコミットが実行される原因となるアクションを実行)することによって、このオプションによって得ることができるパフォーマンスの利点が失われる可能性が高いためです。
  • LANSA SuperServerモードで使用した場合、効果は何もありません。
  • 16 個以上のテーブルに同時にアクセスするジョブでは、この機能を使用しないことをお勧めします。

...

LANSA SuperServerモードで使用された場合でも、コミットを発行します。
[ Image Added |../../index.htm#lansa/set_session_value.htm]