2.20.8 SQLパラレル実行機能
検索系SQL(SELECT文)の処理を複数のノードで並列実行できます。この機能をSQLパラレル実行機能といいます。この機能を使用することによって,検索系SQLの処理時間が短縮できます。SQLパラレル実行機能の概要を次の図に示します。
- 注
-
上記は,HAモニタありのマルチノード構成のシステム構成例です。HAモニタなしのマルチノード構成の場合は,セカンダリノードをワーカーノードに読み替えてください。
- [説明]
-
上記の図の場合,3つのノード(セカンダリノードと2つのワーカーノード)で検索系SQLの処理を並列実行しています。
-
HADBクライアントからのAPの接続要求は,プライマリノードのHADBサーバが受け付けます。
-
プライマリノードのHADBサーバが,検索系SQLを実行するトランザクションを割り当てるノードを決定します。トランザクションが割り当てられたノードをSQLメインノードといいます。
-
SQLメインノードのHADBサーバが検索系SQLの処理を分割して,負荷の少ないノードに処理を依頼します。検索系SQLの処理を割り振られたノードをSQLサブノードといいます。
-
- メモ
-
-
SQLメインノードとSQLサブノードで検索系SQLの処理が並列実行されます。検索結果は,SQLメインノードからHADBクライアントに返されます。
-
各ノードの負荷の状況などを踏まえて,プライマリノードがSQLメインノードとSQLサブノードを決定します。上記の例では,セカンダリノードがSQLメインノードになっていますが,ワーカーノードがSQLメインノードになることもあります。
-
各ノードの負荷の状況によっては,プライマリノードがSQLメインノードまたはSQLサブノードになることもあります。
-
SQLサブノードの数は,検索系SQLを実行するときの各ノードの負荷によって変わります。負荷が高いノードは,SQLサブノードに選ばれません。そのため,負荷が高いノードがある場合は,検索系SQLを並列実行するノード数が少なくなります。SQLサブノードが1つも確保できない場合は,検索系SQLがエラーになります(KFAA31898-Eメッセージが出力されます)。
-
- ■SQLパラレル実行機能が適用される検索系SQLの条件
-
SQLパラレル実行機能が適用される検索系SQLについては条件があります。条件については,マニュアルHADB AP開発ガイドのSQLパラレル実行機能が適用される条件を参照してください。
- ■SQLパラレル実行機能を適用すると効果的なケース
-
大量のデータを検索するときに,SQLパラレル実行機能を適用すると効果があります。例えば,次のどれかの条件に該当する表を検索するときにSQLパラレル実行機能を適用すると,検索処理時間の短縮が見込まれます。
-
データ容量が大きい表
-
1回のデータインポートで格納するデータの容量が大きい表
目安として,入力データファイルのサイズが,「1ギガバイト×ノード数」以上の表が該当します。
-
検索対象のデータをあまり絞り込まないでアクセスすることが多い表
-
- ■SQLパラレル実行機能を使用するときの準備作業および運用
-
SQLパラレル実行機能を使用するときの準備作業および運用については,「18.32 SQLパラレル実行機能の運用」を参照してください。
- ■留意事項
-
次の1.~3.のどれかの条件に該当する場合,SQLパラレル実行機能を適用した検索系SQLはエラーになります(KFAA31898-Eメッセージが出力されます)。
-
読み書き可能トランザクションが実行中の場合
-
次のどれかのコマンドが実行中の場合
-
adbimportコマンド(-bオプションを指定したバックグラウンドインポートは除きます)
-
adbidxrebuildコマンド
-
adbgetcstコマンド
-
adbmergechunkコマンド
-
adbchgchunkcommentコマンド
-
adbchgchunkstatusコマンド
-
adbarchivechunkコマンド
-
adbunarchivechunkコマンド
-
adbreorgsystemdataコマンド
-
-
INSERT文,UPDATE文,またはDELETE文が実行中であり,かつ次のどちらかの条件を満たす場合
-
INSERT文,UPDATE文,またはDELETE文の処理対象表が格納されているデータ用DBエリアと,検索系SQLの処理対象表が格納されているデータ用DBエリアが同じ場合
-
INSERT文,UPDATE文,またはDELETE文の処理対象表のインデクスが格納されているデータ用DBエリアと,検索系SQLの処理対象表のインデクスが格納されているデータ用DBエリアが同じ場合
-
-