Symfoware Parallel Server RDBユーザーズガイド 応用プログラム開発編
目次 索引 前ページ次ページ

第7章 応用プログラムとトランザクション処理

7.5 排他制御

応用プログラムからデータベースへアクセスする場合には、トランザクション単位にSymfoware/RDBで排他制御を行います。排他の属性には、以下のものがあります。

以下に、排他の属性の選択方法と、排他の属性の各項目の概要を説明します。

■排他の属性の選択方

排他の属性の選択には、以下の方法があります。

■占有の資

占有する対象の資源は、その応用プログラムで使用する表のDSIおよびインデックスのDSIです。

■占有の単

占有制御によって資源を占有する単位には、ぺージ単位およびDSI単位があります。

ぺージ単位の占有の場合には、応用プログラムがアクセスするデータを含むぺージが占有の対象になります。DSI単位の占有の場合には、応用プログラムがアクセスするデータを含むDSIが占有の対象になります。

◆Symfoware/RDBによる選択

動作環境ファイルでDSO_LOCKを指定しなかった場合は、Symfoware/RDBによって占有の単位が選択されます。

Symfoware/RDBは、SQL文ごとに、そのSQL文でアクセスするデータの範囲(ぺージ数)を算定します。その範囲(ぺージ数)の大きさに応じて、表:Symfoware/RDBによる占有単位の選択条件に示すように占有単位を選択しています。

[表:Symfoware/RDBによる占有単位の選択条件]

占有単位

選択条件

ページ

アクセスするデータの範囲が小さい場合

DSI

アクセスするデータの範囲が大きい場合


たとえば、表を全件処理する場合には、表のデータを格納している全DSIに対してDSI単位の占有を選択します。また、SQL文の探索条件を解析し、アクセスするぺージが少ないと算定した場合には、ぺージ単位の占有を選択します。なお、アクセスするデータの量が少なくても、その範囲(ぺージ数)が大きい場合には、DSI単位の占有を選択します。

■占有モー

データベースにアクセスする場合のモードには、参照モードと更新モードの2種類があります。

◆データに対する占

データに対する占有モードの選択条件を示します。

動作環境ファイルの実行パラメタでの選択方法

応用プログラムの動作環境ファイルの実行パラメタDSO_LOCKを指定すると、データ操作のSQL文を実行したときのデータに対する占有モードを指定することができます。表:動作環境ファイルの実行パラメタによる占有モードの選択方法に示すように、DSO単位に指定します。

[表:動作環境ファイルの実行パラメタによる占有モードの選択方法]

参照モード指定
(SH指定)

更新モード指定
(EX指定)

実行パラメタそのもの の指定なし

指定DSOの全DSIを参照モード

指定DSOの全DSIを更新モード

すべてSymfoware/RDBによる選択に従う

Symfoware/RDBによる選択

動作環境ファイルでDSO_LOCKを指定しなかった場合は、Symfoware/RDBによって占有モードが選択されます。Symfoware/RDBは、アクセスするデータに対して、表:Symfoware/RDBによる占有モードの選択条件に示す条件で、SQL文ごとにデータに対する占有モードを選択します。

[表:Symfoware/RDBによる占有モードの選択条件]

占有モード

選択条件

参照モード

データを参照する処理の部分の場合

更新モード

データを更新する処理の部分の場合

データ検索を行う以下のSQL文については、アクセスするデータに対する占有モードは参照モードになります。また、これらのSQL文については、インデックスに対する更新が行われないので、インデックスに対するモードは参照モードになります。

データの更新、削除および挿入を行う以下のSQL文については、処理(更新、削除および挿入)対象のデータに対する占有モードは、更新モードになります。ただし、データ更新、削除および挿入を行うSQL文であっても、内部的に参照しか行わない部分に関しては、参照モードになります。

◆インデックスに対する占

インデックスに対する占有モードの選択条件を示します。

動作環境ファイルの実行パラメタでの選択方法

応用プログラムの動作環境ファイルの実行パラメタDSO_LOCKを指定すると、データ操作のSQL文を実行したときのインデックスに対するアクセスモードを指定することができます。表:動作環境ファイルの実行パラメタによるインデックスに対する占有モードの選択方法に示すように、インデックスのDSO単位に指定します。

[表:動作環境ファイルの実行パラメタによるインデックスに対する占有モードの選択方法]

占有モード

選択方法

参照モード

DSO名のあとにSHを指定した場合

更新モード

DSO名のあとにEXを指定した場合、または省略した場合

Symfoware/RDBによる選択

動作環境ファイルでDSO_LOCKを指定しなかった場合は、Symfoware/RDBによって占有モードが選択されます。Symfoware/RDBは、SQL文の処理で使用するインデックスの更新の有無により、表:Symfoware/RDBによるインデックスに対する占有モードの選択条件のように選択します。

[表:Symfoware/RDBによるインデックスに対する占有モードの選択条件]

インデックスに対する占有モード

インデックス更新の有無

更新モード

インデックス更新あり

参照モード

インデックス更新なし

データ更新を行う以下のSQL文については、更新対象の列に設定されているインデックスに対して更新が行われます。したがって、そのようなインデックスに対する占有モードは更新モードになります。一方、更新対象でない列に設定されているインデックスに対しては、更新は行われないので、そのようなインデックスに対する占有モードは参照モードになります。

データ削除および挿入を行う以下のSQL文については、更新対象の表に張られているインデックスに対して更新が行われます。したがって、そのようなインデックスに対する占有モードは更新モードになります。

■占有待ちの有

トランザクション間で資源(行、ページ、DSI)に対して競合が発生した場合、その時点で占有待ちに入る(資源が解放されるまで待つ)場合と、応用プログラムに復帰する場合があります。

◆Symfoware/RDBによる選択

占有待ちを行います。

◆動作環境ファイルの実行パラメタでの選択方法

応用プログラムの動作環境ファイルの実行パラメタISOLATION_WAITで、表:動作環境ファイルの実行パラメタでの占有待ちの有無の選択方法に示すように指定します。

[表:動作環境ファイルの実行パラメタでの占有待ちの有無の選択方法]

占有待ちの有無

選択方法

占有待ちになる

WAITを指定した場合、または省略した場合

応用プログラムに復帰する

REJECTを指定した場合


目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2006