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

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

12.1.5 SQLコネクションとトランザクション制御

分散データベースを利用しない場合のトランザクション制御と比べて,分散データベースを利用する場合は,トランザクションを終了する契機にRDノード指定DISCONNECT文の実行が加わります。RDノード指定DISCONNECT文を実行すると,現在のトランザクションを正常終了させ,同期点を設定します。

COMMIT文を省略してRDノード指定DISCONNECT文でトランザクションを正常終了させることで,COMMIT文でトランザクションを終了させる場合に比べて,既定RDノードとの通信回数を削減できます。

分散RDノードへのSQLコネクションを使用する場合のトランザクションの開始と終了の例を次の図に示します。

図12-2 分散RDノードへのSQLコネクションを使用する場合のトランザクションの開始と終了の例

[図データ]

RDノードを指定しないDISCONNECT文を発行しないでUAPが終了した場合は,実行中のトランザクションをROLLBACKします。この場合に,実行中のトランザクションで分散RDノードのデータベースが変更されていても,実行中のトランザクションが行ったデータベースに対する変更がすべて取り消されます。

分散RDノードへのSQLコネクションは,同時には一つだけ生成できるため,一つのトランザクション内では一つの分散RDノードにしかアクセスできません。既定RDノードを含めれば一つのトランザクション内で二つのRDノードにアクセスできます。

SET CONNECTION文を発行して現行SQLコネクションを切り替えることで,一つのトランザクション内で既定SQLコネクションと分散RDノードへのSQLコネクションを順次使用できます。

OLTP環境で実行するX/Openに従ったアプリケーションプログラムではRDノード指定DISCONNECT文は実行できません。