日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

AnalyticDB for MySQL中的一個算子負責完成一個基本的數據處理邏輯,合理地組合算子、優化算子的順序和執行方式,可以提升數據的處理效率。本文介紹AnalyticDB for MySQL中的常用算子及算子所對應的屬性。

背景信息

AnalyticDB MySQL版中的一個算子負責完成一個基本的數據處理邏輯,一組算子按照執行計劃完成數據的一組處理規則。AnalyticDB MySQL版是一個分布式系統,大多數算子可以達到在多個節點上并行完成計算任務,來提高數據處理效率。

您可以通過AnalyticDB MySQL版的SQL診斷功能查看具備屬性的算子以及算子級別的結果診斷。更多詳情,請參見算子層計劃執行樹算子級別診斷結果。

說明

只有部分算子具備屬性。

Aggregation

AnalyticDB MySQL版是一個分布式數據庫,支持多節點并行完成聚合操作(更多關于聚合和分組聚合的信息,請參見分組聚合查詢優化)。Aggregation算子通過sum()、count()avg()等函數對數據進行聚合或分組聚合操作。

Aggregation算子包含了以下屬性。

屬性

說明

GroupByKeys

分組字段。

AggregationFunctions

使用的聚合函數,例如sum()、count()、avg()等。

說明

如果SELECT字段沒有出現在GROUP BY子句中,也沒有使用任何其他聚合函數,則系統會自動調用arbitrary()函數隨機選取分組中的一個值輸出。更多詳情,請參見ARBITRARY。

Step

當前聚合所處的階段,取值如下:

  • PARTIAL:局部聚合。

  • FINAL:最終聚合。

  • SINGLE:單步聚合,即直接執行最終聚合。

DistinctLimit

對應SQL語句中的DISTINCT LIMIT操作。

Filter

AnalyticDB MySQL版支持兩種數據過濾過程:

  • 數據源過濾:使用存儲層數據的索引進行過濾。

    說明

    沒有獨立的算子用于表示數據源過濾過程,該過程中的過濾條件會體現在TableScan算子中。關于TableScan算子的詳情,請參見TableScan。

  • 非數據源過濾:存儲層數據沒有索引,需要在計算層使用Filter算子進行過濾。

AnalyticDB MySQL版默認對所有字段創建了索引,但在如下場景中不會將過濾條件下推:

  • 查詢語句中使用了no_index_columnsfilter_not_pushdown_columnsHint,或集群使用了adb_config filter_not_pushdown_columns配置,導致過濾條件下推功能被關閉。
  • 過濾條件中使用了函數(包括cast操作符)。
  • 過濾條件中的相關字段沒有索引(例如建表時指定了no_index關鍵字,或建表后執行DROP INDEX刪除了索引)。

此時AnalyticDB MySQL版會使用Filter算子來過濾數據。

Filter算子包含了以下屬性。

屬性

說明

Filter

過濾算子的過濾條件。

Join

對應SQL語句中的Join操作。AnalyticDB MySQL版在創建分布式表時需要通過Distributed By來設置分布字段,Join key是否為分布字段涉及到數據的重分布類型。關于數據重分布的詳情,請參見RemoteExchange。

Join算子包含了以下屬性。

屬性

說明

Criterias

Join條件,例如tb_1.col_a=tb_2.col_a

Type

Join類型。AnalyticDB MySQL版支持4種類型:INNER、LEFT、RIGHT和FULL。

Method

Join算法。AnalyticDB MySQL版支持2種算法:

  • Hash:Hash算法會把小表緩存到內存中,使用Hash表查找的方式完成Join操作。

  • Index:Index算法會充分利用AnalyticDB MySQL版全索引的特點,使用Join key的索引完成Join操作。

JoinFilter

Join過濾條件。

Limit

對應SQL語句中的LIMIT操作。

MarkDistinct

對應SQL語句中的count(DISTINCT)操作。

說明
  • 僅當SQL語句中包含2個或2個以上的count(DISTINCT)操作時,才會使用MarkDistinct算子。

  • 若SQL語句中只包含1個count(DISTINCT)操作,AnalyticDB MySQL版會自動進行優化,使用Aggregation算子。更多詳情,請參見Aggregation。

Project

對應SQL語句中對特定字段的投影操作,例如case when then控制流、concat()函數等。

Project算子包含了以下屬性。

屬性

說明

ProjectExpression

Project表達式。

RemoteExchange

該算子用來表示上游向下游Stage傳輸數據時所用的方法。上下游Stage間傳輸數據的方法有如下幾種:

  • Broadcast:表示上游Stage中每個計算節點的數據都會復制到所有下游Stage的計算節點。

  • Repartition:表示上游Stage中每個節點的數據會按照固定的規則切分后,再分發到下游Stage的指定計算節點。

  • Gather:表示上游Stage中每個節點的數據會集中到下游Stage中某一個特定的計算節點。

關于數據傳輸方法的詳情,請參見Stage層執行計劃樹。

RemoteSource

該算子用來表示當前Stage的輸入數據是通過網絡從遠程節點傳輸過來的。

RemoteSource算子包含了以下屬性。

屬性

說明

OutputColumns

算子輸出的字段。

StageOutput

該算子用于將當前Stage處理后的數據通過網絡傳輸到下游Stage的節點。

Sort

對應SQL語句中ORDER BY子句的操作,執行ORDER BY字段的排序。

Sort算子包含了以下屬性。

屬性

說明

OrderBy

排序字段。

Orderings

排序方式。支持如下方式:

  • ASC_NULLS_FIRST:升序,空值在前。

  • ASC_NULLS_LAST:升序,空值在后。

  • DESC_NULLS_FIRST:降序,空值在前。

  • DESC_NULLS_LAST:降序,空值在后。

SortMerge

執行分布排序時,該算子用于對從上游Stage的多個節點傳輸來的數據進行歸并排序。

TableScan

該算子用于從數據源讀取數據,如果需要過濾數據,那么數據過濾由底層數據源使用索引高效完成。

TableScan算子包含了以下屬性。

屬性

說明

TableName

掃描的數據所屬表名。

SelectFields

表掃描節點掃描的字段。

DataBase

掃描的數據所屬數據庫名。

FilterPushDown

過濾條件是否下推到存儲節點。

說明

僅當當前Stage中存在過濾條件下推時才會展示該屬性。

PushedDownFilter

下推到存儲節點的過濾條件。

說明

僅當當前Stage中存在過濾條件下推時才會展示該屬性。

TableWriter

在ETL類型的SQL語句(如INSERT INTO或REPLACE INTO)執行完對應的數據查詢后,會使用TableWriter算子完成目標表的寫入操作。

TopN

對應SQL語句中的ORDER BY LIMIT m,n查詢。

TopN算子包含了以下屬性。

屬性

說明

OrderBy

排序字段。

Count

對應SQL語句中ORDER BY時的LIMIT操作。

Orderings

排序方式。支持如下方式:

  • ASC_NULLS_FIRST:升序,空值在前。

  • ASC_NULLS_LAST:升序,空值在后。

  • DESC_NULLS_FIRST:降序,空值在前。

  • DESC_NULLS_LAST:降序,空值在后。

Step

TopN算子的執行步驟,包括如下步驟:

  • PARTIAL:在分布式排序過程中,對各個節點上的數據進行局部排序。

  • SORTMERGE:對已經進行了局部排序的數據進行最終的歸并排序。

  • SINGLE:沒有Partial過程,直接進行最終的歸并排序。

Offset

對應SQL語句中ORDER BY時的OFFSET操作。

Union

對應SQL語句中的UNION操作。

Window

對應SQL語句中的窗口函數操作。關于窗口函數的詳情,請參見窗口函數。