Skip to content

Latest commit

 

History

History
104 lines (67 loc) · 5.51 KB

20230115_01.md

File metadata and controls

104 lines (67 loc) · 5.51 KB

PostgeSQL 的undo存储引擎可能不那么重要了

作者

digoal

日期

2023-01-15

标签

PostgreSQL , PolarDB , undo


背景

观点

PostgeSQL 的undo存储引擎, 特别是单纯的undo存储引擎研发(例如zheap)可能没那么重要了.

逻辑

为什么这么说?

任何一个产品功能都应该是市场导向的, undo存储引擎解决的问题是: 高频更新操作对数据页造成的垃圾, 如果未及时回收, 会导致表膨胀, 增加碎片, 增加空间占用, 增加buffer占用, 影响性能, 增加索引膨胀概率(HOT除外).

一方面, 提高垃圾回收频率, 提高磁盘IOPS性能, 可以解决这个问题.

另一方面, 从市场角度, 如果高频更新的业务场景萎缩, 取而代之崛起的是append only、计算型的业务场景呢?

物联网端上报数据、业务端用户行为数据、交易数据等, 都是append only的时序、流式类数据. 这类数据的需求如下, 这些才是重要的:

  • heap存储, 列存储, 块压缩, 多模类特性(扩展存储结构, 扩展检索算法, 流计算, 扩展运算算法), 自动数据分片, 分布式存储和分布式计算, 自动冷热分级存储等, 这些特性显得更为重要.

数据

支撑这个观点的数据, 可以从dbgengine中找到, 时序、多模类数据库发展迅猛. 而且有些用户也会使用老牌关系数据库去覆盖这类场景, 实际份额应该比数值表述的还要大.

dbengine数据统计如下:

postgres=# select split_part(c5,',',1),sum (c8::numeric) filter (where c8 !~ '±'), sum (c6::numeric) , round (sum (c8::numeric) filter (where c8 !~ '±')/sum (c6::numeric),4)*100 || ' %'from b  group by split_part(c5,',',1) order by 2 desc;  
    split_part    |  sum   |   sum   |  ?column?    
------------------+--------+---------+------------  
 Time Series      |   8.01 |   75.96 | 10.5500 %  
 Multi-model info |   6.90 |  268.31 | 2.5700 %  
 RDF              |   3.86 |    8.65 | 44.6200 %  
 Object oriented  |   3.29 |   14.12 | 23.3000 %  
 Key-value        |   2.25 |  271.67 | 0.8300 %  
 Multivalue       |   2.20 |   16.87 | 13.0400 %  
 Graph            |   1.73 |   70.72 | 2.4500 %  
 Native XML       |   0.99 |    4.20 | 23.5700 %  
 Navigational     |   0.47 |    4.09 | 11.4900 %  
 Event            |   0.26 |    1.48 | 17.5700 %  
 Content          |  -0.36 |    6.48 | -5.5600 %  
 Spatial DBMS     |  -2.04 |   32.60 | -6.2600 %  
 Wide column      | -10.49 |  181.88 | -5.7700 %  
 Document         | -30.28 |  571.22 | -5.3000 %  
 Relational       | -33.64 | 5452.86 | -0.6200 %  
 Search engine    | -34.61 |  318.50 | -10.8700 %  
(16 rows)  

参考

pg tam, iam

  • table access method
  • index access method

digoal's wechat