自研高性能存儲(chǔ)引擎Beam
Beam自研存儲(chǔ)引擎采用統(tǒng)一的存儲(chǔ)設(shè)計(jì)(行存Detla和PAX結(jié)構(gòu)的列存Base),既能夠承載OLTP的高并發(fā)讀寫負(fù)載,也能夠應(yīng)對(duì)OLAP的批量寫入和大量掃描場景。
Beam是AnalyticDB PostgreSQL版基于PostgreSQL 12的Table Access Method開發(fā)的下一代自研存儲(chǔ)引擎。
Beam存儲(chǔ)引擎包含兩部分:
用以應(yīng)對(duì)實(shí)時(shí)寫入的行存格式的Delta。
用以應(yīng)對(duì)批量寫入和大量掃描場景的基于PAX結(jié)構(gòu)的列存格式的Base。
相對(duì)于Heap行存表,大大降低了總體磁盤I/O要求,極大地提高了分析場景的查詢性能。同時(shí)支持主鍵和寫入去重,并發(fā)Update和Delete,可以支持DTS直接同步到Beam。您可以通過Beam實(shí)現(xiàn)使用一份存儲(chǔ)同時(shí)解決TP/AP業(yè)務(wù)的需求,從而不需要在行存和列存引擎之間進(jìn)行額外的數(shù)據(jù)同步工作以應(yīng)對(duì)不同的業(yè)務(wù)場景。
注意事項(xiàng)
僅存儲(chǔ)彈性模式v7.0.x版本支持Beam存儲(chǔ)引擎。
Beam存儲(chǔ)引擎在存儲(chǔ)彈性模式v7.0.6.2版本中結(jié)束公測正式上線,該版本修復(fù)了公測中的問題,建議您盡快升級(jí)到v7.0.6.2及以上版本。
Beam特性
高性能實(shí)時(shí)寫
Beam的存儲(chǔ)分為行存Delta和PAX結(jié)構(gòu)的列存Base兩個(gè)部分。在數(shù)據(jù)寫入時(shí),會(huì)根據(jù)數(shù)據(jù)寫入方式,自動(dòng)選擇合適的存儲(chǔ)方式。當(dāng)您使用INSERT INTO VALUES
等流式實(shí)時(shí)方式寫入數(shù)據(jù)時(shí),會(huì)寫入行存Delta部分,以達(dá)到與行存Heap表相當(dāng)?shù)膶?shí)時(shí)寫入性能。
高吞吐批量導(dǎo)入
當(dāng)您使用COPY
或INSERT INTO SELECT
等批處理方式寫入數(shù)據(jù)時(shí),則會(huì)直接寫入到列存Base部分,以達(dá)到更高的吞吐,獲得更高的寫入性能。
高性能AP查詢
Beam引擎使用了多種方式來優(yōu)化查詢的性能,包括:
列裁剪技術(shù)
支持多種壓縮算法
支持Zonemap過濾
支持IO-Prefetch
大大降低了查詢時(shí)對(duì)磁盤I/O的要求,提高了I/O的利用率,從而大幅提升了查詢性能。
支持主鍵/寫入去重
Beam完全實(shí)現(xiàn)了Postgres原生的主鍵功能,您可以像使用Heap表一樣在Beam表上構(gòu)建主鍵索引,從而實(shí)現(xiàn)數(shù)據(jù)去重功能。在此基礎(chǔ)上,Beam還支持了語法,實(shí)現(xiàn)了UPSERT功能。
支持DTS同步
得益于主鍵的支持,Beam表可以和Heap表一樣,實(shí)現(xiàn)DTS數(shù)據(jù)同步鏈路。您可以在DTS任務(wù)中將目標(biāo)表配置為Beam表,從而獲得更優(yōu)的查詢性能,而不需要在行存和列存表之間做額外的數(shù)據(jù)同步。
相關(guān)文檔
更多關(guān)于Beam存儲(chǔ)引擎的使用,請參見Beam使用。
Beam支持多種壓縮算法,其中字典編碼功能可以將字符串類型的數(shù)據(jù)壓縮為整型數(shù)據(jù),提升存儲(chǔ)效率,加速過濾、聚合等類型查詢的性能。詳情請參見字典編碼。
如果您經(jīng)常對(duì)某列或某幾列進(jìn)行范圍查詢或等值篩選,可以指定Beam排序鍵提升查詢效果。詳情請參見Beam排序優(yōu)化(7.0版)。