18.6.3 トランザクションを実行するノード
トランザクションを実行するノードは,トランザクションアクセスモードおよびトランザクション隔離性水準の指定によって決まります。トランザクションアクセスモードおよびトランザクション隔離性水準と,トランザクションを実行するノードの関係を次の表に示します。
項番 |
トランザクションアクセスモードの指定 |
トランザクション隔離性水準の指定 |
トランザクションを実行するノード |
---|---|---|---|
1 |
読み書き可能モード |
READ COMMITTED |
プライマリノード |
2 |
REPEATABLE READ |
||
3 |
読み取り専用モード |
READ COMMITTED |
全ノードのうちどれかのノード |
4 |
REPEATABLE READ |
プライマリノード |
トランザクションを実行するノードを次の図に示します。
- 注
-
上記は,HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は,セカンダリノードをワーカーノードに読み替えてください。
検索系SQLだけを実行するAPの場合,次の設定をすることで,セカンダリノードおよびワーカーノードのリソースを有効に活用できます。
-
トランザクションアクセスモードを読み取り専用モードにする
-
トランザクション隔離性水準をREAD COMMITTEDにする
トランザクションアクセスモードおよびトランザクション隔離性水準の指定方法を次の表に示します。
項番 |
APの種別 |
トランザクションアクセスモードの指定方法 |
トランザクション隔離性水準の指定方法 |
---|---|---|---|
1 |
JDBCドライバを使用したAP |
|
|
2 |
ODBCドライバを使用したAP |
|
|
3 |
CLI関数を使用したAP |
|
|
指定方法の詳細については,マニュアルHADB AP開発ガイドを参照してください。
また,トランザクションを実行するノードは,次に示す要素などを考慮して,プライマリノードのHADBサーバが自動的に決定します。
-
トランザクションアクセスモード
-
トランザクション隔離性水準
-
各ノードの負荷
そのため,トランザクションごとに,実行するノードが変わることがあります。ただし,ホールダブルカーソルでカーソルをオープン中の場合は,実行するノードは変わりません。
- 重要
-
読み書き可能モードのトランザクション,または一部のコマンドが実行中のときは,読み取り専用モードのトランザクションもプライマリノードで実行されます(セカンダリノードおよびワーカーノードを使用しません)。そのため,セカンダリノードおよびワーカーノードのリソースを有効に活用するために,読み書き可能モードのトランザクションはできる限り細かい頻度で決着させるようにしてください。
なお,ここでいう一部のコマンドについては,「2.20.2 トランザクションおよびコマンドが実行されるノード」の「(4) トランザクションとコマンドの同時実行についての制限」を参照してください。
- ■SQLパラレル実行機能を使用する場合
-
-
SQLパラレル実行機能を使用する場合も,トランザクションアクセスモードを読み取り専用モードにし,トランザクション隔離性水準をREAD COMMITTEDにする必要があります。この指定をしないと,検索系SQLにSQLパラレル実行機能が適用されません。
-
プライマリノードのHADBサーバが,各ノードの負荷などを考慮してSQLサブノードを決定します。したがって,SQLパラレル実行機能が適用された検索系SQLを実行するたびにSQLサブノードが変わることがあります。ただし,SQLパラレル実行機能が適用された検索系SQLを実行しているホールダブルカーソルがオープン中の場合は,トランザクションを決着しても,SQLメインノードおよびSQLサブノードは変わりません。
-