全部產品
Search
文件中心

PolarDB:概述

更新時間:Oct 25, 2024

本文介紹了PolarDB MySQL版的列存索引特性。

簡介

當前主要面向OLTP情境,廣泛應用於線上業務,日常產生大量的資料。但是,基於行存的查詢效能並不能滿足所有應用情境的需求。通常情況下,為了實現複雜分析型查詢,需要將資料從PolarDB MySQL版匯出,然後匯入到外部專用的OLAP系統中再進行分析查詢。這樣一來,需要使用兩套資料庫系統,架構複雜性、營運工作量和成本都會大大增加。

PolarDB MySQL版重磅推出的列存索引(In-Memory Column Index,簡稱IMCI)面向OLAP情境巨量資料量複雜查詢。通過列存索引,PolarDB MySQL版實現了一體化的即時交易處理和即時資料分析的能力,成為一站式HTAP資料庫產品解決方案。通過一套資料庫系統,即可滿足業務的OLTP及OLAP需求。

版本要求

  • 企業版叢集,叢集版本需滿足以下條件之一:

    • PolarDB MySQL版8.0.1版本,且修訂版本為8.0.1.1.22及以上。

    • PolarDB MySQL版8.0.2版本,且修訂版本為8.0.2.2.12及以上。

實現形態

為了實現OLAP和OLTP的計算資源隔離,當前僅支援在唯讀節點上實現列存索引,即OLAP查詢請求只發給唯讀節點,而不會發給主節點。至於OLAP查詢請求是發給唯讀行存節點,還是唯讀列存節點,可根據行存/列存分流方案進行配置。

費用說明

該功能可免費使用,只收取唯讀列存節點的費用。唯讀列存節點按照普通的計算節點收費,具體請參見隨用隨付計費規則訂用帳戶計費規則。同時,列存索引也會佔用一定的儲存空間,儲存空間計費具體請參見儲存類型計費規則

注意事項

  • 列存索引(IMCI)不支援全球資料庫(GDN)功能。

  • 列存索引功能與無感秒切(熱備節點)功能中的高可用模組(Voting Disk)有一定的互斥。具體如下:

    • 對於核心版本為8.0.1.1.42及以上,或8.0.2.2.23及以上版本的叢集:

      • 若叢集中已有開啟熱備功能的唯讀節點,支援在該叢集中添加唯讀列存節點。

      • 若叢集中已存在唯讀列存節點,則該叢集中的任何唯讀節點都不支援開啟熱備功能。

    • 對於核心版本低於8.0.1.1.42版本,或低於8.0.2.2.23版本的叢集,列存索引與熱備節點完全互斥,即:

      • 若叢集中已有開啟熱備功能的唯讀節點,則不支援在該叢集中添加唯讀列存節點。

        說明

        此時若您需要繼續為叢集添加唯讀列存節點,您需要聯絡阿里雲支援人員,在後台關閉Voting Disk,在關閉過程中會自動重啟所有節點。

    • 若叢集中已存在唯讀列存節點,則該叢集中的任何唯讀節點都不支援開啟熱備功能。

技術原理

列存索引特性在PolarDB MySQL版中的功能架構圖如下:架構

從以上架構圖可以看到,PolarDB MySQL版從儲存引擎、執行運算元、最佳化器三個層面設計了列存索引的特性:

  • 儲存引擎:支援即時事務層級一致性的行列混合儲存;

  • 執行運算元:面向列存的向量化並存執行運算元,支援極速的單表和多表查詢;

  • SQL Parser/最佳化器:面向行列混合儲存的CBO最佳化器,可以根據代價自動選擇行存或者列存執行查詢請求;

在此架構下,PolarDB MySQL版實現了100%相容MySQL協議的基礎上,同時獲得數個數量級的查詢加速效果。

核心優勢

PolarDB MySQL版依託列存索引特性,具備如下優勢:

  • 100%相容MySQL:列存具有與MySQL一致的資料類型系統,支援靈活的類型轉換,100%相容MySQL協議;

  • 優秀的HTAP效能:PolarDB在OLTP方面本身具備良好效能。列存索引使其OLAP效能也與專用的OLAP資料庫系統處於同一水平;

  • 行列混合儲存,降低成本:同時支援行儲存和列儲存兩種格式,且即時保證行列的事務級一致。列存更具有低成本的優勢。

適用情境

PolarDB MySQL版的列存索引特性提供了一站式HTAP產品體驗,可以應用於多種業務情境:

  • 對線上資料有即時資料分析需求的情境,如即時報表;

  • 專用資料倉儲情境:依託PolarDB提供的海量資料存放區能力,匯聚多個上遊資料來源,將其作為專用資料倉儲使用;

  • ETL資料加速計算情境:依託PolarDB基於列存索引提供的強大而靈活的計算能力,在PolarDB中使用SQL來實現ETL功能。情境

效能提升情況

列存索引功能對SQL查詢操作有明顯的加速作用,查詢效能甚至可以提升百倍。接下來我們以標準TPC-H測試的資料表和SQL為例,體驗列存索引對查詢的加速效果。

  • 測試方法:TPC-H是業界常用的一套基準,由TPC委員會制定發布,用於評測資料庫的分析型查詢能力。TPC-H查詢包含8張資料表、22條複雜的SQL查詢,大多數查詢包含若干表Join、子查詢和Group by彙總等。

說明

本文的TPC-H的實現基於TPC-H的基準測試,並不能與發行的TPC-H基準測試結果相比較,本文中的測試並不符合TPC-H基準測試的所有要求。

  • 資料量:100 GB。

  • 測試結果

    • 開啟列存索引前後效能對比

      下圖展示了開啟列存索引前後分別執行TPC-H的22條查詢語句的查詢回應時間的對比。和自己比

    • 開啟列存索引後與ClickHouse效能對比

      下圖展示了開啟列存索引後,執行TPC-H的21條查詢語句(Q21除外,ClickHouse不支援)的查詢回應時間,與相同資料量和資料結構的ClickHouse資料庫的對比。和ck比

  • 結論

    • 列存索引對大多數的複雜查詢操作都有加速作用,查詢效能提升非常明顯,甚至可達到百倍。

    • 與傳統OLAP資料庫ClickHouse相比:PolarDB MySQL版開啟列存索引後,與ClickHouse效能相比各有優劣。其中在單表Scan/AGG、Join等情境中表現突出。未來的列存索引特性將在彙總加速、視窗函數等方面持續最佳化和突破。