GLOP型は特定のデータベース アクティビティに基づいて、GLOPデータの持続性の境界を決定します。
システムGLOP
システムGLOPマッピングは、指定されたセットのすべてのメンバーによってマップされます。同じ名前のGLOPセットのメンバーである外部ルーチンはすべて、このメモリ マッピングを共有します。
システムGLOPデータ用に読み取り専用または読み取り/書き込みのいずれかの変更属性を設定すると、以下の影響があります。
変更属性 | 結果 |
---|---|
読み取り専用 | セットのメンバーである外部ルーチンはすべて、同じデータでマップされます。そのため、すべて同じコンテキストが示されます。 システムGLOPが複数のページで構成される場合、さまざまな異なる外部ルーチンがシステムGLOPのさまざまな異なるページを同時にマップでき、このとき各ルーチンは参照したいデータの一部を表示することができます。 |
読み取り/書き込み | ある1つのvproc上のセットのメンバーになっているすべての外部ルーチンは、データを変更する外部ルーチンによって行なわれたものと同じ変更を表示します。 データを変更する外部ルーチンがすべてのvproc上で同じ変更を行なうのでなければ、さまざまな異なるvprocが必ずしも同じデータ変更を行なう必要はありません。 |
読み取り専用および読み取り/書き込み変更属性について詳しくは、GLOP変更属性を参照してください。
読み取り/書き込み変更属性を持つシステムGLOPデータの場合、標準または共有のいずれかのマッピング属性を設定すると、以下の影響があります。
マッピング属性 | 結果 |
---|---|
標準 | 同じシステム データをマップするさまざまな異なるGLOPセットが、別々のマッピングを取得します。 |
共有 | 同じシステム データをマップするさまざまな異なるGLOPセットが、vproc上で同じシステムGLOPマッピングを実行します。 |
通常および共有マッピング属性の詳細については、GLOPマッピング属性を参照してください。
ロールGLOP
ロールGLOPマッピングは常に、外部ルーチンが実行している特定のロールに関連付けられ、特定のセッションのログオン ユーザーに設定された内容に基づいています。
条件 | 結果 |
---|---|
マッピングは特定のロールについて存在し、セッションにはそのロールを使用するように設定されたそれ自体のコンテキストがあります。 | システムは特定のロールについてGLOPデータをマップします。 |
外部ルーチンは、GLOPセットの特定のロールについてロールGLOPデータ マッピングが指定されていないコンテキストで実行します。 | 外部ルーチンについては何もマップされません。 |
ルーチンは、ロールALLが設定されているセッションで実行するよう設定されます。 | どのロールを使用するか判別できないため、何もマップされません。 |
セッション ロールはNONEまたはNULLです。 | 何もマップされません。 |
GLOPセット用のロールGLOPデータ マッピングはセッション ローカルではなく、ロールに基づいています。そのため、10個のセッションがあり、それぞれが同じロールを使用する場合、それらの10個のセッションは、同じGLOPセットのメンバーになっているすべての外部ルーチンで同じロールGLOPデータ マッピングを使用します。これは、GLOPセット内でロールごとに別個のマッピングがある点を除けば、システムGLOPマッピングに似ています。
他の外部ルーチンが別のGLOPセットのメンバーになっており、どちらのセットにも同じロールが指定されている場合、それらのロール マッピングは独立しています。(これは、特定のロールが特定のGLOPセット用のマッピングを持っていると見なすGLOPデータが実際に存在することを前提としています。)
ロールGLOPの変更属性の影響は、システムGLOPの変更属性の影響と似ています。
変更属性 | 結果 |
---|---|
読み取り専用 | すべてのvprocsには、GLOP定義を持つロールごとに同一のロール データがあります。さらに、ノード上に読み取り専用ロールGLOPデータの物理コピーが1つだけあります。 |
読み取り/書き込み | vprocが異なれば、そこにあるデータも異なることがあります。 |
複数のロールを同じデータにマップさせる場合、共有マッピング属性を使用して、それらのロールに同じデータをマップし、同じGLOPデータを参照させるようにします。
読み取り専用および読み取り/書き込み変更属性について詳しくは、GLOP変更属性を参照してください。通常および共有マッピング属性の詳細については、GLOPマッピング属性を参照してください。
ユーザーGLOP
ユーザーGLOPマッピングは常に特定のログオン ユーザーIDに関連付けられます。これはプロキシー ユーザーに関連付けられるのではなく、プロキシーの基礎ユーザーに関連付けられます。同じユーザーIDにログオンしているすべてのセッションは、同じGLOPセットを指定しているならば、特定のユーザー マッピングのデータを共有します。この動作はロール マッピングと似ています。(詳細は、ロールGLOPを参照)。このため、すべて同じユーザーにログオンしている複数のセッションは、そのユーザーGLOPセットに関連付けられている外部ルーチンの内部にある情報を共有できます。
マッピングは常に、現在の許可ではなく、外部ルーチンを実行するログオン ユーザーに関連付けられます(現在の許可は異なる場合があるからです)。例えば、Joeが外部ストアド プロシージャを作成し、Bettyがその外部'DEFINER'プロシージャにログオンして実行する場合、現在の許可はJoeになります。しかし、ログオン ユーザーはBettyなので、ユーザーBettyのGLOPデータがある場合には、それがマップされるデータであり、ユーザーJoeのGLOPデータがマップされるわけではありません。
セッションGLOP
セッションGLOPマッピングは特定のセッションに特有です。通常、そのセッションだけがデータを表示できます。セッションにログオンしている限り、データは存在します。データはログオン セッションを超えて存続することはありません。新規セッションが開始されると、セットに固有のGLOPデータ行から新規のフレッシュ コピーが取得されてマップされます。データは、セッション内で実行するすべての外部ルーチンおよび特定のGLOPセットにアクセスできます。
さまざまな異なるGLOPセットのメンバーになっている外部ルーチンは、さまざまな異なるGLOPセッション マッピングを取得します。共用マッピング属性が設定されていなければ、マッピングはセッションに専用です。
マッピング属性 | 結果 |
---|---|
標準 | 同じセッションの読み取り/書き込みデータをマップするさまざまな異なるGLOPセットは、別々のマッピングを取得します。 |
共有 | 同じセッションの読み取り/書き込みデータをマップするさまざまな異なるGLOPセットは、同じマッピングを取得します。 |
読み取り/書き込みデータへのGLOPの変更は保存され、同じGLOPセットを使用する次の外部ルーチンで表示されます。
通常および共有マッピング属性の詳細については、GLOPマッピング属性を参照してください。
トランザクションGLOP
トランザクションGLOPマッピングはセッションおよびトランザクションに特有です。トランザクションが存続する限り、トランザクションGLOPマッピングも存続します。このGLOP型は、AMP vprocで実行する外部ルーチンにのみ使用可能です。これはPE vprocsに使用可能になったり、関連したりすることはありません。なぜなら、多くの外部ルーチンは実際にはトランザクションの外部で実行するからです。そのため、マッピングが提供されているとしても、長時間使用可能にはなりません。
トランザクションが終了すると、マッピングは失われます。
トランザクションが開始すると、セットに固有のGLOPデータから新規のフレッシュ コピーが取得されてマップされます。
リクエストGLOP
リクエストGLOPマッピングはセッション、トランザクション、およびリクエストの組み合わせに特有です。このGLOP型は、AMP vprocで実行する外部ルーチンにのみ使用可能です。リクエストGLOPマッピングの存続期間は最も短い可能性があります。このマッピングはリクエストの初めに指定されると作成され、リクエスト期間中は存続します。同じリクエストおよびGLOPメンバーシップ内で実行されるすべての外部ルーチンは、関係するセッションについて同じマッピングを表示します。リクエストの終わりに、マッピングは廃棄されます。そうすると、新規のリクエストがGLOPメンバーシップに関連付けられたGLOPデータから新規のマッピングを取得します。
リクエストの実行期間は非常に短い可能性があるため、このGLOP型を使用するには、注意深く考えなければならない点がいくつかあります。不注意な使用をした場合、このモードはトランザクション(例えば、TPUMPで発生した小さいリクエストのセット)の実行時間を大幅に増やす可能性があります。
外部ルーチンGLOP
外部ルーチンGLOPマッピングは特定のルーチンに関連付けられます。これは常にそのルーチンに特有ですが、すべてのセッション境界に及びます。つまり、外部ルーチンがどのセッションで実行するとしても、マッピングは常に使用可能であるということです。異なるセッションで実行する同じ名前の外部ルーチンのインスタンスがいくつかある場合、そのすべてはこのGLOP型について同じGLOPデータを指します。これを変更すると、その変更は今後のすべての呼び出し側によって参照されます。GLOPデータは、次にシステムが再始動するか、またはGLOPの変更によって強制的に除去されるまで保存されます。