使用 Aurora DSQL EXPLAIN 計劃 - Amazon Aurora DSQL

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Aurora DSQL EXPLAIN 計劃

Aurora DSQL 使用與 PostgreSQL 類似的 EXPLAIN 計劃結構,但具有反映其分散式架構和執行模型的新增金鑰。

在本文件中,我們將提供 Aurora DSQL EXPLAIN 計劃的概觀,重點介紹與 PostgreSQL 相比的相似性和差異。我們將涵蓋 Aurora DSQL 中可用的各種掃描操作類型,並協助您了解執行查詢的成本。

PostgreSQL VS Aurora DSQL EXPLAIN 計劃

Aurora DSQL 建立在 PostgreSQL 資料庫之上,並與 PostgreSQL 共用大多數計劃結構,但具有影響查詢執行和最佳化的關鍵架構差異:

功能 PostgreSQL Aurora DSQL

資料儲存體

堆積儲存

沒有堆積,所有資料列都會以唯一識別符編製索引

主索引鍵

主索引鍵索引與資料表資料不同

主索引鍵索引是包含所有額外資料欄做為 INCLUDE 資料欄的資料表

次要索引

標準次要索引

運作方式與 PostgreSQL 相同,能夠包含非索引鍵資料欄

篩選功能

索引條件、堆積篩選條件

索引條件、儲存篩選條件、查詢處理器篩選條件

掃描類型

循序掃描、索引掃描、僅限索引掃描

完整掃描、僅限索引掃描、索引掃描

查詢執行

資料庫本機

分散式 (運算和儲存是分開的)

Aurora DSQL 會以主索引鍵順序直接存放資料表資料,而不是以個別堆積存放。每一列都由唯一索引鍵識別,通常是主索引鍵,可讓資料庫更有效率地最佳化查詢。架構差異說明在 PostgreSQL 可能選擇循序掃描的情況下,Aurora DSQL 經常使用僅限索引掃描的原因。

另一個關鍵區別在於,Aurora DSQL 會將運算與儲存區分開,讓篩選條件能更早在執行路徑中套用,以減少資料移動並改善效能。

如需搭配 PostgreSQL 使用 EXPLAIN 計劃的詳細資訊,請參閱 PostgreSQL EXPLAIN 文件

Aurora DSQL EXPLAIN 計畫中的關鍵元素

Aurora DSQL EXPLAIN 計畫提供如何執行查詢的詳細資訊,包括進行篩選的位置,以及從儲存體擷取哪些資料欄。了解此輸出可協助您最佳化查詢效能。

索引條件

用來導覽索引的條件。最有效率的篩選,可減少掃描的資料。在 Aurora DSQL 中,索引條件可以套用至執行計畫的多層。

投影

從儲存體擷取的資料欄。較少的投影表示效能更好。

儲存篩選條件

在儲存層級套用的條件。比查詢處理器篩選條件更有效率。

查詢處理器篩選條件

在查詢處理器層級套用的條件。篩選之前需要傳輸所有資料,這會導致更高的資料移動和處理額外負荷。

Aurora DSQL 中的篩選條件

Aurora DSQL 會將運算與儲存區分開,這表示在查詢執行期間套用篩選條件的點會對效能產生重大影響。在傳輸大量資料之前套用的篩選條件可減少延遲並改善效率。越早套用篩選條件,需要處理、移動和掃描的資料就越少,從而加快查詢速度。

Aurora DSQL 可以在查詢路徑的多個階段套用篩選條件。了解這些階段是解譯查詢計劃和最佳化效能的關鍵。

Level 篩選條件類型 描述
1 索引條件

掃描索引時套用。限制從儲存體讀取的資料量,並減少傳送至運算層的資料。

2 儲存篩選條件 從儲存體讀取資料之後,但在傳送至運算之前套用。這裡的範例是 索引包含資料欄上的篩選條件。減少資料傳輸,但不會減少讀取量。
3 查詢處理器篩選條件 在資料到達運算層後套用。所有資料都必須先傳輸,這會增加延遲和成本。目前,Aurora DSQL 無法在儲存體上執行所有篩選和投影操作,因此某些查詢可能會被迫回復到這種類型的篩選。