Beam自研存储引擎采用统一的存储设计(行存Detla和PAX结构的列存Base),既能够承载OLTP的高并发读写负载,也能够应对OLAP的批量写入和大量扫描场景。
Beam是AnalyticDB PostgreSQL版基于PostgreSQL 12的Table Access Method开发的下一代自研存储引擎。
Beam存储引擎包含两部分:
用以应对实时写入的行存格式的Delta。
用以应对批量写入和大量扫描场景的基于PAX结构的列存格式的Base。
相对于Heap行存表,大大降低了总体磁盘I/O要求,极大地提高了分析场景的查询性能。同时支持主键和写入去重,并发Update和Delete,可以支持DTS直接同步到Beam。您可以通过Beam实现使用一份存储同时解决TP/AP业务的需求,从而不需要在行存和列存引擎之间进行额外的数据同步工作以应对不同的业务场景。
注意事项
仅存储弹性模式v7.0.x版本支持Beam存储引擎。
Beam存储引擎在存储弹性模式v7.0.6.2版本中结束公测正式上线,该版本修复了公测中的问题,建议您尽快升级到v7.0.6.2及以上版本。
Beam特性
高性能实时写
Beam的存储分为行存Delta和PAX结构的列存Base两个部分。在数据写入时,会根据数据写入方式,自动选择合适的存储方式。当您使用INSERT INTO VALUES
等流式实时方式写入数据时,会写入行存Delta部分,以达到与行存Heap表相当的实时写入性能。
高吞吐批量导入
当您使用COPY
或INSERT INTO SELECT
等批处理方式写入数据时,则会直接写入到列存Base部分,以达到更高的吞吐,获得更高的写入性能。
高性能AP查询
Beam引擎使用了多种方式来优化查询的性能,包括:
列裁剪技术
支持多种压缩算法
支持Zonemap过滤
支持IO-Prefetch
大大降低了查询时对磁盘I/O的要求,提高了I/O的利用率,从而大幅提升了查询性能。
支持主键/写入去重
Beam完全实现了Postgres原生的主键功能,您可以像使用Heap表一样在Beam表上构建主键索引,从而实现数据去重功能。在此基础上,Beam还支持了语法,实现了UPSERT功能。
支持DTS同步
得益于主键的支持,Beam表可以和Heap表一样,实现DTS数据同步链路。您可以在DTS任务中将目标表配置为Beam表,从而获得更优的查询性能,而不需要在行存和列存表之间做额外的数据同步。
相关文档
更多关于Beam存储引擎的使用,请参见Beam使用。
Beam支持多种压缩算法,其中字典编码功能可以将字符串类型的数据压缩为整型数据,提升存储效率,加速过滤、聚合等类型查询的性能。详情请参见字典编码。
如果您经常对某列或某几列进行范围查询或等值筛选,可以指定Beam排序键提升查询效果。详情请参见Beam排序优化(7.0版)。