スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド

[目次][索引][前へ][次へ]

3.5.4 ホールダブルカーソル

<この項の構成>
(1) ホールダブルカーソルとは
(2) ホールダブルカーソル使用時の効果
(3) ホールダブルカーソル使用時の処理

(1) ホールダブルカーソルとは

ホールダブルカーソルとは,COMMIT文を実行しても閉じないカーソルのことをいいます。

ホールダブルカーソルを使用する場合,DECLARE CURSORにUNTIL DISCONNECT,又はWITH HOLDを指定してカーソルを宣言します。この指定をすると,CLOSE文,DISCONNECT文,又はROLLBACK文(エラー発生などで暗黙的に実行されるROLLBACKやDISCONNECT処理を含む)を実行するまでカーソルを開いたままにできます。

(2) ホールダブルカーソル使用時の効果

ホールダブルカーソルを使用すると,大量のデータを検索,又は更新する場合に,途中でCOMMIT文を実行できるため,排他資源の削減に有効となります。また,カーソルを開いたままCOMMIT文を実行できるので,大量のデータを検索,又は更新する(トランザクションを長時間実行する)場合でも,シンクポイントを有効にし,再開始時の時間を短縮できます。

(3) ホールダブルカーソル使用時の処理

ホールダブルカーソルを使用した場合,作業表用ファイルの削除,及び作業表用ワークバッファの解放は,その作業表用ファイルを作成したホールダブルカーソルのクローズ後のコミットで行われます。

ホールダブルカーソルをオープンした場合,各バックエンドサーバプロセスは,トランザクションがなくても占有されます。したがって,ホールダブルカーソルを使用する場合は,最大サーバプロセス数の見積もり時に注意する必要があります。

UNITIL DISCONNECT指定のLOCK文の実行有無と,作業表を作成する検索,又はパラレルスキャンの有無によって,トランザクションを超えて引き継ぐ排他資源が異なります。引き継ぐ排他資源を次に示します。

[図データ]

[説明]
図中の番号の説明を次に示します。
番号 UNITIL DISCONNECT指定のLOCK文の実行 作業表を作成する検索,又はパラレルスキャン 引き継ぐ排他資源
1 あり 該当しません LOCK文の資源だけ引き継ぎます。
2 なし あり すべての資源を引き継ぎます。
3 なし カーソル位置の資源だけ引き継ぎます。

OLTP環境下のUAPでホールダブルカーソルを使用する場合,HiRDBのシステム定義のpd_oltp_holdcrオペランドにuseを指定する必要があります。

また,OLTP環境下のUAPでホールダブルカーソルを使用する場合は,次の条件を満たす必要があります。

注※
カーソルの後処理をする方法を次に示します。
  1. カーソルのクローズ
  2. ROLLBACK文実行
  3. DISCONNECT文実行
  4. UAPの終了

UAPのサービス関数からのSQLの実行シーケンスを次に示します。図中のトランザクション開始API,カーソルOPEN,カーソルCLOSE,及びCOMMIT APIの順序関係に注意してください。

[図データ]

[説明]
  1. カーソルの保持範囲
  2. トランザクションの範囲