Hitachi

Hitachi Advanced Data Binder システム構築・運用ガイド


16.5.3 トランザクションを実行するノード

トランザクションを実行するノードは,トランザクションアクセスモードおよびトランザクション隔離性水準の指定によって決まります。トランザクションアクセスモードおよびトランザクション隔離性水準と,トランザクションを実行するノードの関係を次の表に示します。

表16‒7 トランザクションアクセスモードおよびトランザクション隔離性水準と,トランザクションを実行するノードの関係

項番

トランザクションアクセスモードの指定

トランザクション隔離性水準の指定

トランザクションを実行するノード

1

読み書き可能モード

READ COMMITTED

プライマリノード

2

REPEATABLE READ

3

読み取り専用モード

READ COMMITTED

全ノードのうちどれかのノード

4

REPEATABLE READ

プライマリノード

トランザクションを実行するノードを次の図に示します。

図16‒3 トランザクションを実行するノード

[図データ]

検索系SQLだけを実行するAPの場合,次の設定をすることで,セカンダリノードおよびワーカーノードのリソースを有効に活用できます。

トランザクションアクセスモードおよびトランザクション隔離性水準の指定方法を次の表に示します。

表16‒8 トランザクションアクセスモードおよびトランザクション隔離性水準の指定方法

項番

APの種別

トランザクションアクセスモードの指定方法

トランザクション隔離性水準の指定方法

1

JDBCドライバを使用したAP

  • システムプロパティのadb_clt_trn_access_mode

  • ユーザプロパティのadb_clt_trn_access_mode

  • 接続用のURLのadb_clt_trn_access_mode

  • ConnectionインタフェースのsetReadOnlyメソッド

  • システムプロパティのadb_clt_trn_iso_lv

  • ユーザプロパティのadb_clt_trn_iso_lv

  • 接続用のURLのadb_clt_trn_iso_lv

  • ConnectionインタフェースのsetTransactionIsolationメソッド

2

ODBCドライバを使用したAP

  • クライアント定義のadb_clt_trn_access_modeオペランド

  • SQLSetConnectAttr()またはSQLSetConnectAttrW()

  • クライアント定義のadb_clt_trn_iso_lvオペランド

  • SQLSetConnectAttr()またはSQLSetConnectAttrW()

3

CLI関数を使用したAP

  • クライアント定義のadb_clt_trn_access_modeオペランド

  • a_rdb_SQLSetConnectAttr()

  • クライアント定義のadb_clt_trn_iso_lvオペランド

  • a_rdb_SQLSetConnectAttr()

指定方法の詳細については,マニュアルHADB AP開発ガイドを参照してください。

また,トランザクションを実行するノードは,次に示す要素などを考慮して,プライマリノードのHADBサーバが自動的に決定します。

そのため,トランザクションごとに,実行するノードが変わることがあります。ただし,ホールダブルカーソルでカーソルをオープン中の場合は,実行するノードは変わりません。

重要

読み書き可能モードのトランザクション,または一部のコマンドが実行中のときは,読み取り専用モードのトランザクションもプライマリノードで実行されます(セカンダリノードおよびワーカーノードを使用しません)。そのため,セカンダリノードおよびワーカーノードのリソースを有効に活用するために,読み書き可能モードのトランザクションはできる限り細かい頻度で決着させるようにしてください。

なお,ここでいう一部のコマンドについては,「2.19.2 トランザクションおよびコマンドが実行されるノード」の「(4) トランザクションとコマンドの同時実行についての制限」を参照してください。

■SQLパラレル実行機能を使用する場合
  • SQLパラレル実行機能を使用する場合も,トランザクションアクセスモードを読み取り専用モードにし,トランザクション隔離性水準をREAD COMMITTEDにする必要があります。この指定をしないと,検索系SQLにSQLパラレル実行機能が適用されません。

  • プライマリノードのHADBサーバが,各ノードの負荷などを考慮してSQLサブノードを決定します。したがって,SQLパラレル実行機能が適用された検索系SQLを実行するたびにSQLサブノードが変わることがあります。ただし,SQLパラレル実行機能が適用された検索系SQLを実行しているホールダブルカーソルがオープン中の場合は,トランザクションを決着しても,SQLメインノードおよびSQLサブノードは変わりません。