2.9.7 排他モード指定による無排他検索機能【4V FMB,4V AFM】
SDBデータベースを操作するAPIの排他モードの指定によって,ページまたはサブページに排他を掛けないでレコードの検索および構成情報取得を実行できます。この機能を排他モード指定による無排他検索機能といいます。
排他モード指定による無排他検索機能は,次の指定でレコードの検索,または構成情報取得を実行した場合に適用されます。
-
個別開始時に指定するSDBデータベースを操作するAPIで,排他モード1に'N'(無排他モード)を指定した場合
排他モード指定による無排他検索機能が適用されると,データページ(ページまたはサブページ)に対して排他を掛けないため,排他自動解除機能は適用されません。
排他モード指定による無排他検索機能は,4V FMBまたは4V AFMのSDBデータベースの場合に適用されます。
- 〈この項の構成〉
(1) 排他モード指定による無排他検索機能の適用条件
排他モード指定による無排他検索機能は,レコードを参照した時点での,データの整合性を重視しない検索で使用するようにしてください。
(2) 排他モード指定による無排他検索機能で排他を掛けない資源
排他モード指定による無排他検索機能で排他を掛けない資源は,レコードを格納するデータページ(ページまたはサブページ)だけです。それ以外の上位の排他資源については,「表2-36 排他制御のモードの組み合わせの例(4V FMBのSDBデータベースの場合)」,または「表2-37 排他制御のモードの組み合わせの例(4V AFMのSDBデータベースの場合)」に従って排他が掛けられます。そのため,更新ログ取得方式がログレスモードで,操作対象データベースを更新するトランザクションが実行中の場合は,排他モード指定による無排他検索機能が適用される条件を満たしていても,排他待ちになります。
(3) 排他モード指定による無排他検索機能を適用する際の留意事項
排他モード指定による無排他検索機能を適用する際の留意事項を次に示します。
-
排他モード指定による無排他検索機能を使用した場合,ほかのユーザが占有しているデータでも,排他解除を待たないで参照できます。一方で,同一トランザクション内で同じレコードを2度検索しても,結果が同じにならないことがあります。また,レコードを更新したユーザがそのトランザクションを取り消すと,データの整合性が取れていない状態のレコードを参照したことになります。
-
ほかのトランザクションによるデータの更新との同時実行のタイミングによっては,検索が続行できなくなり,ロールバックされることがあります。この場合は,このトランザクションを再実行するか,またはこのトランザクション中の個別開始時に指定するSDBデータベースを操作するAPIで,排他モード1に'N'(無排他モード)以外を指定して,トランザクションを実行してください。
-
システム共通定義のpd_lock_uncommited_delete_dataオペランドにWAITを指定した場合でも,NOWAIT(省略値)を指定した場合と同様の動作となります。
-
子レコードを検索した際に返却されるUSERポインタの情報は,親レコード検索時点のものです。
-
親レコードの検索以降にほかのトランザクションがUSERポインタを更新した場合,実態とは異なるUSERポインタの情報が返却されることがあります。
-
この不整合は,USERポインタを使用した検索を実施した際,検知されます。その場合はロールバックされます。
-
-
ほかのトランザクションとの同時実行タイミングによっては,終端検知の結果が,SDBデータベースを操作するAPIの排他モード1に'N'(無排他モード)以外を指定した場合の終端検知の結果とは異なることがあります。