AnalyticDB PostgreSQL版同時搭載了兩套最佳化器:TP最佳化器和AP最佳化器,前者更適合TP情境中的簡單查詢SQL、後者適合AP情境的複雜查詢SQL。AnalyticDB PostgreSQL版針對HTAP情境進行了不同的最佳化,極大地提升了資料庫效能。
MagicSet下推
MagicSet下推是適用於OLAP的一個高效的最佳化器改寫規則,其利用MagicSet提供的filtering能力,降低在大表上彙總的代價,並降低同彙總結果join的代價,從而達到減少彙總的負擔及提高與彙總結果join的效能的效果。AnalyticDB PostgreSQL版最佳化器將MagicSet下推改寫規則引入,部分OLAP情境可以獲得較大的效能提升。
Filter動態調整
對於Filter運算元的scalar boolean運算式,執行引擎通常可以採用filter短路的技術最佳化提升執行效率。例如:
condition_1 AND condition_2 AND ... condition_k 在計算上述運算式的時候,如果condition_1是false, 則根據conjunctive的語義,整個運算式是false, 計算引擎可以直接跳轉,不需要進一步計算取餘的conditions。
AnalyticDB PostgreSQL版最佳化器可通過Filter動態調整演算法,調整運算式分支前後順序的方式,把結果最可能是false的分支提前,從而充分利用計算引擎filter短路技術,簡化conjunctive boolean運算式的計算代價。
HTAP最佳化器自適應
AnalyticDB PostgreSQL版引入HTAP最佳化器自適應選擇演算法,動態判斷OLAP/OLTP不同情境效能最佳的最佳化器,使用者無需關心最佳化器的選擇問題。