データベースでは、INSERT INTO <Table> SELECT …… を実行するシナリオが頻繁に発生します。SELECTの実行時間が長すぎると、全体の実行効率が低下する可能性があります。読み取り専用分析エンジンは、オンラインSQLにおける複雑なクエリを担うものとして、この機能を使用することでINSERT……SELECT……ステートメントのSELECT部分を読み取り専用分析エンジンで実行し、SELECTクエリの効率を加速できます。その後、データが自動的に読み書きノードにライトバックされ、業務の実行効率を大幅に向上させることが可能となります。
技術原理
図のように、読み取り専用分析エンジンでINSERT…SELECT…ステートメントを実行できます。SELECT文は読み取り専用分析エンジンによって高速化され、クエリ結果が直接読み書きインスタンスに書き込まれるため、全体の実行効率が向上します。
使用シナリオ
注意:
この機能はデータ遅延の影響を受けないシナリオにのみ適用されます。読み取り専用分析エンジンは非同期レプリケーションモードであるため、読み取り専用分析エンジンに遅延が発生している場合、クエリ結果と読み書きインスタンスの間には一定の時間差が生じます。
この機能の使用が推奨されるシナリオは以下の通りです:クエリ条件が複雑でSQL文の実行時間が長いが、クエリ結果セットのデータ量が小さい場合。このようなシナリオでは、読み取り専用分析エンジンがSELECTクエリの実行効率を加速するため、本機能を使用することでパフォーマンスを大幅に向上させることができます。
この機能を使用しても、すべてのシナリオでパフォーマンスの向上をもたらすわけではなく、特定の状況ではパフォーマンスが低下する場合があります。例:
INSERT…SELECT…文のSELECTクエリが比較的単純な場合、読み取り専用分析エンジンからデータを読み取って読み書きインスタンスにライトバックすると、追加のネットワークオーバーヘッドが発生します。読み書きインスタンスから直接データを読み取る場合と比較して、その利点はあまり顕著ではありません。
INSERT…SELECT…文のSELECTクエリ結果セットのデータ量が大きい場合、主なパフォーマンスボトルネックは結果セットがネットワーク経由で転送され、読み書きインスタンスに書き込まれるプロセスにあります。このシナリオでは、本機能を使用してパフォーマンスを最適化することはできません。