AnalyticDB for MySQLは、基本的なデータ処理ロジックを完了します。 演算子を組み合わせて使用するか、演算子の順序と実行方法を最適化して、データ処理効率を向上させることができます。 このトピックでは、AnalyticDB for MySQLでサポートされている一般的な演算子とそのプロパティについて説明します。
背景情報
AnalyticDB for MySQLは、基本的なデータ処理ロジックを完了します。 演算子のセットは、実行計画に基づいてデータの処理規則のセットを完成させる。 AnalyticDB for MySQLの分散システムでは、ほとんどのオペレーターが複数のノードで並行してコンピューティングジョブを完了し、データ処理効率を向上させることができます。
AnalyticDB for MySQLのSQL診断機能を使用して、プロパティを持つ演算子と演算子レベルの診断結果を表示できます。 詳細については、「オペレーターレベルの診断結果」および「実行計画を使用してクエリを分析する」トピックの「オペレーター層の実行計画階層グラフ」セクションをご参照ください。
特定の演算子のみがプロパティを持ちます。
集約
AnalyticDB for MySQLは、複数のノードでの並列集計操作を可能にする分散データベースサービスです。 通常の集約とグループ化ベースの集約の詳細については、「グループ化と集約クエリの最適化」をご参照ください。 Aggregation演算子は、SUM()
、COUNT()
、AVG()
などの関数を使用して、データに対して通常の集計またはグループ化ベースの集計を実行します。
次の表に、Aggregation演算子のプロパティを示します。
プロパティ | 説明 |
GroupByKeys | グループ化に使用されるフィールド。 |
AggregationFunctions | 使用される集計関数 ( 説明 GROUP BY句にSELECTフィールドが含まれておらず、他の集計関数が使用されていない場合、システムは |
手順 | 現在の集計ステージ。 有効な値:
|
DistinctLimit
この演算子は、SQL文のDISTINCT LIMIT操作に相当します。
フィルター
AnalyticDB for MySQLは、次のタイプのデータフィルタリングをサポートしています。
データソースフィルタリング: ストレージレイヤーのデータインデックスは、データをフィルタリングするために使用されます。
説明データソースのフィルタリングプロセスを表すために独立演算子は使用されません。 このプロセスのフィルタ条件は、TableScan演算子に反映されます。 詳細については、このトピックの「TableScan」セクションを参照してください。
非データソースフィルタリング: ストレージ層のデータはインデックス化されません。 フィルター演算子を使用して、コンピューティングレイヤーでデータをフィルター処理する必要があります。
デフォルトでは、AnalyticDB for MySQLはすべてのフィールドのインデックスを作成します。 ただし、次のシナリオでは、フィルター条件はプッシュダウンされません。
クエリ文で
no_index_columns
またはfilter_not_pushdown_columns
ヒントが使用されている場合、またはクラスターでadb_config filter_not_pushdown_columns構成が使用されている場合、フィルター条件のプッシュダウン機能は無効になります。CAST
などの関数は、フィルタ条件で使用されます。フィルター条件の関連列にはインデックスがありません。 たとえば、テーブルを作成するときに
no_index
キーワードを使用したり、テーブルの作成後にno_index
ステートメントを実行してインデックスを削除したりします。
この場合、AnalyticDB for MySQLはフィルター演算子を使用してデータをフィルターします。
フィルター演算子のプロパティを次の表に示します。
プロパティ | 説明 |
フィルター | フィルター演算子のフィルター条件。 |
参加
この演算子は、SQL文のJOIN操作に相当します。 AnalyticDB for MySQLで分散テーブルを作成する場合、distributed by
句を使用して配布フィールドを指定する必要があります。 データ再配布のタイプは、ジョインキーが配布フィールドとして使用されるかどうかによって決定されます。 データの再配布の詳細については、このトピックの「RemoteExchange」セクションを参照してください。
次の表に、Join演算子のプロパティを示します。
プロパティ | 説明 |
基準 | 結合条件。 例: |
データ型 | 結合タイプ。 AnalyticDB for MySQLでは、INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの4種類の結合を使用できます。 |
方式 | 結合アルゴリズム。 AnalyticDB for MySQLでは、2種類の結合アルゴリズムを使用できます。
|
JoinFilter | 結合のフィルター条件。The filter conditions in a join. |
制限
この演算子は、SQL文のLIMIT操作に相当します。
MarkDistinct
この演算子は、SQL文のCOUNT(DISTINCT)
操作に相当します。
MarkDistinct演算子は、SQL文に2つ以上の
COUNT(DISTINCT)
操作が含まれる場合にのみ使用されます。SQL文に
COUNT(DISTINCT)
操作が1つしか含まれていない場合、AnalyticDB for MySQLは自動的にAggregation演算子を使用します。 詳細については、このトピックの「集約」セクションを参照してください。
プロジェクト
この演算子は、CASE WHEN THEN
制御フロー文やCONCAT()
関数など、SQL文の特定のフィールドに対する射影演算と同等です。
次の表に、Project演算子のプロパティを示します。
プロパティ | 説明 |
ProjectExpression | プロジェクション式。 |
RemoteExchange
この演算子は、上流ステージから下流ステージにデータを転送するために使用される方法を示します。 次の方法を使用できます。
ブロードキャスト: 上流ステージの各計算ノードのデータがコピーされ、下流ステージのすべての計算ノードに転送されます。
再分割: 上流ステージの各計算ノードのデータは、特定のルールに基づいて分割され、下流ステージの指定された計算ノードに分散されます。
収集: 上流ステージの各計算ノードのデータは、下流ステージの特定の計算ノードに集中されます。
詳細については、「実行計画を使用してクエリを分析する」トピックの「ステージ層の実行計画階層グラフ」をご参照ください。
RemoteSource
この演算子は、現在のステージの入力データがネットワークを介してリモートノードから転送されることを示します。
RemoteSource演算子のプロパティを次の表に示します。
プロパティ | 説明 |
OutputColumns | RemoteSourceオペレータによってエクスポートされるフィールド。 |
ステージ出力
このオペレータは、現在のステージで処理されたデータを、ネットワークを介して下流のステージのノードに転送する。
ソート
この演算子は、SQL文のORDER BY操作に相当します。 この演算子は、ORDER BY句のフィールドをソートします。
次の表に、ソート演算子のプロパティを示します。
プロパティ | 説明 |
OrderBy | データのソートに使用されるフィールド。 |
注文 | データがソートされる順序。 有効な値:
|
SortMerge
このオペレータは、分散ソート中に、上流段の複数のノードから転送されたデータをマージしてソートする。
TableScan
この演算子は、データソースからデータを読み取ります。 基になるデータソースは、インデックスを使用してデータをフィルタリングできます。
次の表に、TableScan演算子のプロパティを示します。
プロパティ | 説明 |
TableName | スキャンされたデータが属するテーブルの名前。 |
SelectFields | TableScanノードによってスキャンされるフィールド。 |
データベース | スキャンされたデータが属するデータベースの名前。 |
FilterPushDown | フィルター条件をストレージノードにプッシュダウンするかどうかを指定します。 説明 このプロパティは、現在のステージにフィルター条件が含まれている場合にのみ表示されます。 |
PushedDownFilter | ストレージノードにプッシュダウンされるフィルター条件。 説明 このプロパティは、現在のステージにフィルター条件が含まれている場合にのみ表示されます。 |
TableWriter
INSERT INTOやREPLACE INTOなどのETL (extract-transform-load) ジョブを実行するSQL文を使用してデータを照会した後、この演算子はデータをテーブルに書き込みます。
TopN
この演算子は、SQL文のORDER BY LIMIT m,n
操作に相当します。
次の表に、TopN演算子のプロパティを示します。
プロパティ | 説明 |
OrderBy | データのソートに使用されるフィールド。 |
集計 | この演算子は、SQL文のORDER BY LIMIT操作に相当します。 |
注文 | データがソートされる順序。 有効な値:
|
手順 | TopN演算子の実行ステップ。 有効な値:
|
Offset | この演算子は、SQL文のORDER BY OFFSET操作に相当します。 |
Union
この演算子は、SQL文のUNION操作に相当します。
ウィンドウ
この演算子は、SQL文のウィンドウ関数に相当します。 詳細については、「ウィンドウ関数」をご参照ください。