ApsaraDB for SelectDB通過Nereids最佳化器與Pipeline執行引擎實現查詢自動最佳化,同時支援手動最佳化查詢(如索引加速、高並發點查、物化視圖及 Join 最佳化)以滿足高效能查詢情境需求。
自動最佳化查詢規劃
在SelectDB中,Nereids最佳化器和Pipeline執行引擎是其內建的兩項核心的查詢處理技術,分別針對查詢最佳化和執行階段進行深度最佳化,顯著提升複雜查詢效能和資源使用率。以下是Nereids最佳化器和Pipeline執行引擎在SelectDB如何對一條SQL最佳化的大致流程:
各技術主要特性如下所示,如需瞭解更多,您需查閱相關文檔。
技術名稱 | 特性說明 |
| |
|
手動最佳化查詢
如果SelectDB內建的Nereids全新最佳化器和Pipeline執行引擎仍未能滿足您的查詢需求,您可以通過統計資訊分析查詢資料,並根據分析結果選擇合適的最佳化策略,以最佳化您的查詢。
最佳化方式 | 使用情境 | 使用限制 |
適用於高並發的點查詢最佳化。 說明 點查詢是指從資料庫中檢索滿足特定條件的少量資料,通常通過主鍵或高基數列進行檢索。 |
| |
適用於重複且耗時較長的複雜查詢的最佳化。 |
更多限制,請參見物化視圖的局限性。 | |
適用於任何情境下快速過濾或地位元據的最佳化。 | 不同的索引,會有不同限制,更多詳情,請參見索引加速。 | |
Join最佳化。 | Join條件中需存在左表的分布式列,且左表在執行時只使用了單分區的資料。 | |
Join最佳化。 | Join條件中需存在左表的分布式列,且左右屬於同一個Colocate Group。 | |
大表Join小表的最佳化。 | 使用Runtime Filter時Join語句需同時滿足以下兩個要求。
| |
去重結果必須精確,且資料基數在百萬級以內,或儲存資源充足的情境。 |
| |
需處理海量資料(如十億級),且允許結果一定誤差(如分析類指標),或需在分布式系統中高效合并結果的情境。 |
|