スケーラブルデータベースサーバ HiRDB Version 8 UAP開発ガイド
ホールダブルカーソルとは,COMMIT文を実行しても閉じないカーソルのことをいいます。
ホールダブルカーソルを使用する場合,DECLARE CURSORにUNTIL DISCONNECT,又はWITH HOLDを指定してカーソルを宣言します。この指定をすると,CLOSE文,DISCONNECT文,又はROLLBACK文(エラー発生などで暗黙的に実行されるROLLBACKやDISCONNECT処理を含む)を実行するまでカーソルを開いたままにできます。
ホールダブルカーソルを使用すると,大量のデータを検索,又は更新する場合に,途中でCOMMIT文を実行できるため,排他資源の削減に有効となります。また,カーソルを開いたままCOMMIT文を実行できるので,大量のデータを検索,又は更新する(トランザクションを長時間実行する)場合でも,シンクポイントを有効にし,再開始時の時間を短縮できます。
ホールダブルカーソルを使用した場合,作業表用ファイルの削除,及び作業表用ワークバッファの解放は,その作業表用ファイルを作成したホールダブルカーソルのクローズ後のコミットで行われます。
ホールダブルカーソルをオープンした場合,各バックエンドサーバプロセスは,トランザクションがなくても占有されます。したがって,ホールダブルカーソルを使用する場合は,最大サーバプロセス数の見積もり時に注意する必要があります。
UNITIL DISCONNECT指定のLOCK文の実行有無と,作業表を作成する検索,又はパラレルスキャンの有無によって,トランザクションを超えて引き継ぐ排他資源が異なります。引き継ぐ排他資源を次に示します。
番号 | UNITIL DISCONNECT指定のLOCK文の実行 | 作業表を作成する検索,又はパラレルスキャン | 引き継ぐ排他資源 |
---|---|---|---|
1 | あり | 該当しません | LOCK文の資源だけ引き継ぎます。 |
2 | なし | あり | すべての資源を引き継ぎます。 |
3 | なし | カーソル位置の資源だけ引き継ぎます。 |
OLTP環境下のUAPでホールダブルカーソルを使用する場合,HiRDBのシステム定義のpd_oltp_holdcrオペランドにuseを指定する必要があります。
また,OLTP環境下のUAPでホールダブルカーソルを使用する場合は,次の条件を満たす必要があります。
UAPのサービス関数からのSQLの実行シーケンスを次に示します。図中のトランザクション開始API,カーソルOPEN,カーソルCLOSE,及びCOMMIT APIの順序関係に注意してください。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.