AnalyticDB for MySQL Data Warehouse Edition は、[インタラクティブ] モードまたは [バッチ] モードでのクエリをサポートしています。 これら 2 つのクエリ実行モードをリソースグループと共に使用して、ハイブリッド負荷を実装できます。
前提条件
クラスタは Data Warehouse Edition である必要があります。
背景
AnalyticDB for MySQL は、Alibaba Cloud によって開発されたリアルタイム オンライン分析処理(OLAP)サービスであり、大量のデータを高い同時実行性で分析します。 AnalyticDB for MySQL は、複数のディメンションにわたる大量のデータを瞬時に分析し、ビジネスに関するデータに基づく洞察を提供できます。 AnalyticDB for MySQL は、超並列処理(MPP)と有向非巡回グラフ(DAG)を統合した実行エンジンを利用しています。 これにより、AnalyticDB for MySQL はメモリを使用して高速でデータを計算できます。 分析クエリには、低レイテンシのリアルタイム分析クエリや高スループットの抽出、変換、ロード(ETL)クエリなど、さまざまな負荷が伴います。 メモリのみに基づいて、低レイテンシでリアルタイム分析クエリを実行できます。 ETL クエリは、クエリレイテンシに対する要件は低いですが、処理コストの削減とスループットの向上が求められます。
これらの問題に対処するために、AnalyticDB for MySQL Data Warehouse Edition は、計算にメモリのみを使用する元の [インタラクティブ] モードに基づいて、[バッチ] モードを提供します。 [インタラクティブ] モードとは異なり、[バッチ] モードを使用してクエリジョブをバッチで実行できます。 メモリが不足している場合、各タスクはメモリデータをディスクに転送できます。 これにより、計算コストが削減され、データ処理能力が向上します。
インタラクティブモード
AnalyticDB for MySQL は、ユーザーからクエリを受信すると、クエリを解析し、オプティマイザを使用して実行プランを生成します。 実行エンジンはこれらのプランを受信し、対応する分散実行タスクを生成します。 これらのタスクは、実行プランに記述されているロジックに基づいて計算されます。 実行エンジンは、これらの分散実行タスクをスケジュールおよび管理します。
[インタラクティブ] モードでは、クエリのすべての分散実行タスクが同時にスケジュールおよび実行されます。 各タスクはメモリに基づいてのみ計算されます。 データは、アップストリームタスクからダウンストリームタスクにパイプライン方式で転送されます。
インタラクティブモードは、低レイテンシが要求されるリアルタイム分析クエリに適しています。
バッチモード
[バッチ] モードでは、実行エンジンは依存関係に基づいて分散実行タスクをバッチでスケジュールします。 タスクの計算中にメモリが不足している場合、データ処理能力を高めるためにデータは自動的にディスクに転送されます。 計算中に生成された中間データもディスクに書き込まれます。 ダウンストリームタスクが実行されるようにスケジュールされると、中間データがディスクから読み取られて計算されます。
バッチモードは、ETL クエリなど、実行に長時間を要する大規模クエリに適しています。
デフォルトのクエリ実行モード
エディション | 製品シリーズ | デフォルトのクエリ実行モード | バッチモードのサポート |
Data Warehouse Edition | 予約モード | インタラクティブ | いいえ |
エラスティックモード | はい |
クエリ実行モードの変更
AnalyticDB for MySQL クラスタのクエリ実行モードを変更できます。
次の文を実行して、AnalyticDB for MySQL クラスタのクエリ実行モードを [インタラクティブ] モードに変更します。
set adb_config query_type=interactive次の文を実行して、AnalyticDB for MySQL クラスタのクエリ実行モードを [バッチ] モードに変更します。
set adb_config query_type=batch説明ほとんどの場合、インスタンスレベルで実行モードを [バッチ] に切り替えないことをお勧めします。 代わりに、クエリまたはリソースグループレベルでモードを [バッチ] に切り替えることができます。
次の文を実行して、クエリのクエリ実行モードを変更します。
/* query_type=batch|interactive*/ SELECT * FROM test_table;
ハイブリッド負荷
AnalyticDB for MySQL リソースグループは、クラスタ内の複数のテナントをサポートしています。 クラスタ内のリソースグループに対して異なるクエリ実行モードを設定できます。 これにより、クラスタはハイブリッド負荷を同時に処理できます。 詳細については、「リソースグループの概要」をご参照ください。