PolarDB for MySQL8.0.1版和8.0.2版在功能上存在一些差異,包括Warm Buffer Pool、Hash Join、彈性并行查詢、執行器增強、優化器增強、分區表、多主集群(庫表)、Blink Tree等方面的差異。本文介紹這兩個版本的功能區別,以便您基于業務場景選擇合適的版本。
版本選擇建議
目前8.0.1和8.0.2均為正式發布的LTS版本,8.0.1完全兼容對應社區MySQL-8.0.13及更低的版本,8.0.2完全兼容對應社區MySQL-8.0.18及更低的版本。如下詳細列舉了兩個版本的功能區別,您可以根據業務場景需要選擇合適的版本。
功能差異對比
分類 | 功能特性 | 功能描述 | 8.0.1版 | 8.0.2版 |
數據可靠性/異地災備 | 數據分布在兩個可用區,每個可用區有3個副本,總共有6個副本。當主可用區故障時,可以在幾分鐘內快速恢復到備可用區。但由于兩個可用區之間數據異步復制,在強制切換時,可能會丟失1秒以內的數據。 | 支持 | 支持 | |
數據庫橫跨三個可用區部署,其中兩個可用區存儲了全量的數據,稱為“數據可用區”。當數據可用區故障時,系統可以自動切換到備用數據可用區,且數據0丟失。當日志可用區故障時,不影響業務正常運行。 | 支持 | 支持 | ||
全球數據庫網絡是由分布在全球不同地域(Region)內的多個數據庫組成的一張網絡。網絡中所有PolarDB的數據保持同步,可以在全球范圍內提供本地讀取服務。跨Region復制延遲小于2秒,可以滿足大部分本地訪問的需求。 | 支持 | 支持 | ||
在RW出現故障時,數據庫內核可以迅速檢測到RW的故障。熱備節點可以迅速切換成RW節點,而且立刻提供和原RW一樣的性能(熱備節點有熱Buffer Pool)。 | 支持 | 支持 | ||
無RO、無Standby節點,用于個人學習、微型網站、中小企業的入門級產品。 | 支持 | 支持 | ||
擴展性 | 一寫多讀 | 一個數據庫集群最多支持16個節點,其中1個寫節點,15個只讀節點,訪問一個地址,內部自動讀寫分離。 | 支持 | 支持 |
一寫多讀下提供高性能的RO。 | 支持 | 支持 | ||
一個數據庫集群每個節點均可寫,可動態秒級擴縮容。 | 支持 | 支持 | ||
Serverless數據庫能夠使得數據庫集群資源隨客戶業務負載動態彈降,將客戶從復雜的業務資源評估和運維工作中解放出來。 | 支持 | 支持 | ||
可用性/穩定性/業務連續性 | 主備切換、升級配置、升級版本的時候,95%的連接不中斷。 | 支持 | 支持 | |
只讀endpoint優化 | 只讀endpoint支持基于SQL的負載均衡策略;只讀endpoint基于SQL負載能夠支持IMCI、連接保持等功能。 | 支持 | 支持 | |
事務保護 | 主備切換、升級配置、升級版本時,大事務無需等待完成或強制回滾。 | 支持 | 支持 | |
通過提前預熱備庫的內存,可以避免主備切換之后新的主庫負載衰退的問題,提升數據庫穩定性。 | 不支持 | 支持 | ||
不論是PHP短連接并發過高,還是Java等有連接池的微服務等架構導致建立的長連接過多,均可以通過PolarDB連接池來解決。 | 支持 | 支持 | ||
PolarDB在數據庫內核層進行了創新性的優化,不但能夠自動識別熱點行更新請求,而且將一定時間間隔內對同一數據行的更新操作進行分組,不同分組采用流水線的方式并行處理,通過這些優化,極大地提升了系統的性能。 | 支持 | 支持 | ||
在生產環境中,數據庫受統計信息、運行狀態、優化器改動或者能力限制,SQL語句的執行計劃可能不是最優的,同時可能會發生變化,導致SQL執行效率差或者不穩定。通過Outline,可以用不修改業務SQL的方式,固定SQL語句的執行計劃。 | 支持 | 支持 | ||
應用側的并發陡增,經常導致數據庫并發過高從而影響性能。這種情況下,一般都是少量的重復SQL在執行。PolarDB可以限制某一類SQL同時執行的個數,來避免單條SQL壓垮整個數據庫。 | 支持 | 支持 | ||
快速啟動優化。 | 支持 | 支持 | ||
RO規格不同 | 支持不同規格的只讀節點。 | 支持 | 支持 | |
閃回查詢? | 通過閃回查詢(Flashback Query)功能,您可以高效查詢集群、數據庫、數據表在過去某個時間點的信息。 | 支持 | 支持 | |
大吞吐寫入/更新 | PolarDB重構了InnoDB的事務系統,由原來的基于活躍事務數據的事務系統,變為基于提交時間序(CTS)的事務系統,大幅度提升了讀寫混合場景下的性能,同時支持了全局嚴格強一致/MPP等功能的跨節點事務一致性。 | 支持 | 支持 | |
PolarTrans事務系統利用提交時間戳技術CTS和RDMA網絡,在內核層面提供全局一致性(高性能模式)服務,保證發往集群任意副本的讀請求都可以獲得強一致性的結果。 | 支持 | 支持 | ||
REDO IO Cache 優化 | 計算存儲針對云盤IO特征的關鍵路徑優化,增強業務吞吐量。 | 支持 | 支持 | |
Blink Tree | 降低B+Tree index鎖沖突,大幅提高structure modification operations(SMO)并行度及B+Tree并發讀寫性能。 | 支持 | 支持 | |
DDL | 包括秒級加字段、并行DDL、DDL IO性能優化、Faster TRUNCATE/DROP TABLE和針對在DDL IO路徑上的優化,包括DDL預讀、DDL異步IO和DDL多路歸并排序。 | 支持 | 支持 | |
包括非阻塞DDL、DDL物理復制優化、并行元數據鎖同步、防止只讀節點上長事務阻塞DDL操作。 | 支持 | 支持 | ||
PolarDB支持回收站(Recycle Bin)功能,用于將刪除的表臨時轉移到回收站,并且可以自定義刪除表的保留時間,方便找回數據。 | 支持 | 支持 | ||
HTAP & 復雜/分析查詢 | 面向OLAP場景大數據量復雜查詢。通過列存索引,PolarDB for MySQL版實現了一體化的實時事務處理和實時數據分析的能力,成為一站式HTAP數據庫產品解決方案。通過一套數據庫系統,即可滿足業務的OLTP及OLAP需求。 | 支持 | 支持 | |
Hash Join | 支持Hash Join,基于代價選擇Hash Join而不是社區原有的原始替換方案,支持Parallel Hash Join,并實現了執行中的動態Bloom Filter構建,進一步提升性能。 | 不支持 | 支持 | |
單機并行查詢 | 讓一條Query可以運行在多個CPU核上,利用并行化的能力加速,TPC-H中70%以上的Case,提速平均超過10倍。 | 支持 | 支持 | |
打通節點間的計算資源,突破單實例內多線程并行的擴展瓶頸,降低單點爭搶,并實現資源的均衡利用。基于多節點分組能力實現業務負載的物理隔離,結合彈性降低業務成本。 | 不支持 | 支持 | ||
Partial Result Cache、Bloom Filter等算子能力增強。 | 不支持 | 支持 | ||
join謂詞下推,having謂詞下推。 | 不支持 | 支持 | ||
outer join消除。 | 支持 | 支持 | ||
IN-list 轉semi-join。 | 不支持 | 支持 | ||
基于Window函數和基于Derived的子查詢解關聯;基于代價的優化器改寫。 | 不支持 | 支持 | ||
緩存SQL語句的執行計劃信息,以縮短查詢優化時間,提升SQL語句的查詢性能。 | 支持 | 支持 | ||
PolarDB for MySQL提供的SQL Trace功能,用于跟蹤SQL語句的執行信息,如:執行計劃和執行統計信息(包括掃描行數、執行時間等),可以幫助您快速地發現因執行計劃變更而引發的性能變化,并統計當前集群中占用內存最多的查詢語句。 | 支持 | 支持 | ||
統計信息增強 | 通過用戶表更新量,監控統計信息狀態,按需重新收集統計信息。此外支持定時定點啟動、按需啟動、按需取消等功能。減少因為統計信息更新對用戶實例帶來的非預期壓力。 | 支持 | 支持 | |
針對社區Query Cache在并發、內存管理、可能導致系統性能大幅下降上的不足,Fast Query Cache支持高并發、內存動態回收、自適應緩存。 | 支持 | 支持 | ||
支持跨實例訪問,在實例A中用SQL查詢遠程實例B中的數據,支持遠程OSS的csv/orc訪問。 | 支持 | 支持 | ||
分區表 | 對標Oracle支持全量二級分區,INTERVAL間隔分區,混合分區,List Default HASH,分區性能增強等。 | 不支持 | 支持 | |
支持不同分區創建不同索引。 | 不支持 | 支持 | ||
PolarDB for MySQL引擎支持在分區表上創建全局二級索引(Global Secondary Index,簡稱GSI)。使用全局二級索引可以實現透明分區表,即您可以像使用單表一樣使用分區表,大大減少分區鍵對分區表的使用限制。 | 不支持 | 支持 | ||
數據壓縮/歸檔/加密 | 表級壓縮 | 對于指定的表,支持顯著優于MySQL官方的壓縮能力,通過壓縮降低數據的存儲成本。 | 支持 | 支持 |
L2PC | Bufferpool 二級緩存。 | 不支持 | 支持 | |
提供了超大存儲容量,可以同時作為多個業務歷史數據的匯聚地,以方便對所有歷史數據進行集中存儲和管理,支持XEngine和InnoDB混啟動。 | 支持 | 支持 | ||
?冷數據管理? | 為了降低數據存儲成本,PolarDB for MySQL版支持將低頻使用的冷數據歸檔到OSS對象存儲中。 | 支持歸檔表 | 支持歸檔分區和表 | |
其他 | PolarDB for AI功能通過一系列MLOps和內置的模型解決了數據、特征和模型的割裂狀態,實現了基于數據庫的數據智能的一站式服務。 | 支持 | 支持 | |
國產化兼容/性能優化 | ARM兼容性/性能優化。 | 支持 | 支持 | |
RO支持創建用戶內存臨時表 | 可以在RO中支持memory/myisam storage的用戶臨時表。 | 支持 | 支持 | |
透明數據加密 (TDE) 技術幫助保護用戶數據庫。 | 支持 | 支持 | ||
Readable Protobuf | 針對存儲在數據庫中經過Protobuf序列化的Blob類型的字段,您可以在對應的字段上配置Protobuf schema,并通過可視化函數PROTO_TO_JSON(blob_field)來讀取數據,也可以使用JSON_EXTRACT()函數來抽取數據中的部分信息用于創建索引或者虛擬列。 | 支持 | 支持 | |
版本兼容能力 | 對下游數據庫BINLOG同步新增語法的兼容能力。 | 支持 | 支持 |