OpenTeleDB xstore vs GaussDB ustore表膨胀测试

电信天翼云最近开源了OpenTeleDB,发布了XProxy、XStore、XRaft三大技术

XStore号称通过原位更新技术,把旧数据写入回滚段,垃圾集中进行清理回收,数据存储空间不再膨胀

还可消除对 Vacuum 的依赖,无需再为空间回收与事务冻结而进行频繁维护

那么我们就拿OpenTeleDB和GaussDB做个PK吧,看看OpenTeleDB的XSTORE和GaussDB的USTORE谁更强

OpenTeleDB

复制代码
openteledb

postgres=# \d+
                                     List of relations
 Schema |   Name   | Type  |  Owner   | Persistence | Access method |  Size   | Description 
--------+----------+-------+----------+-------------+---------------+---------+-------------
 public | t_xstore | table | postgres | permanent   | xstore        | 132 MB  | 
 public | test     | table | postgres | permanent   | heap          | 12 MB   | 
 public | test01   | table | postgres | permanent   | heap          | 6104 MB | 
(3 rows)

postgres=# \di+
                                              List of relations
 Schema |      Name       | Type  |  Owner   |  Table   | Persistence | Access method |  Size  | Description 
--------+-----------------+-------+----------+----------+-------------+---------------+--------+-------------
 public | idx_t_xstore_n1 | index | postgres | t_xstore | permanent   | xbtree        | 49 MB  | 
 public | idx_t_xstore_n2 | index | postgres | t_xstore | permanent   | xbtree        | 128 MB | 
(2 rows)

在有长事务情况下,对表t_xstore update,delete,insert 30次

postgres=# \d+
                                     List of relations
 Schema |   Name   | Type  |  Owner   | Persistence | Access method |  Size   | Description 
--------+----------+-------+----------+-------------+---------------+---------+-------------
 public | t_xstore | table | postgres | permanent   | xstore        | 4077 MB | 
 public | test     | table | postgres | permanent   | heap          | 12 MB   | 
 public | test01   | table | postgres | permanent   | heap          | 6104 MB | 
(3 rows)

postgres=# \di+
                                              List of relations
 Schema |      Name       | Type  |  Owner   |  Table   | Persistence | Access method |  Size   | Description 
--------+-----------------+-------+----------+----------+-------------+---------------+---------+-------------
 public | idx_t_xstore_n1 | index | postgres | t_xstore | permanent   | xbtree        | 1397 MB | 
 public | idx_t_xstore_n2 | index | postgres | t_xstore | permanent   | xbtree        | 6548 MB | 
(2 rows)


表膨胀30.89倍
索引1膨胀28.5倍
索引2膨胀51.15倍

GaussDB

复制代码
gaussdb

gaussdb=# \d+
                                                                 List of relations
 Schema |   Name   | Type  |  Owner  |  Size   |                                       Storage                                       | Description 
--------+----------+-------+---------+---------+-------------------------------------------------------------------------------------+-------------
 public | t_ustore | table | gaussdb | 126 MB  | {orientation=row,storage_type=ustore,compression=no,segment=off,parallel_workers=8} | 
 public | test01   | table | gaussdb | 5614 MB | {orientation=row,compression=no,storage_type=USTORE,segment=off}                    | 
 public | test02   | table | gaussdb | 11 MB   | {orientation=row,compression=no,storage_type=USTORE,segment=off}                    | 
(3 rows)

gaussdb=# \di+
                                          List of relations
 Schema |      Name       | Type  |  Owner  |  Table   |  Size  |        Storage        | Description 
--------+-----------------+-------+---------+----------+--------+-----------------------+-------------
 public | idx_t_ustore_n1 | index | gaussdb | t_ustore | 37 MB  | {storage_type=USTORE} | 
 public | idx_t_ustore_n2 | index | gaussdb | t_ustore | 118 MB | {storage_type=USTORE} | 
(2 rows)

在有长事务情况下,对表t_ustore update,delete,insert 30次

gaussdb=# \d+
                                                                 List of relations
 Schema |   Name   | Type  |  Owner  |  Size   |                                       Storage                                       | Description 
--------+----------+-------+---------+---------+-------------------------------------------------------------------------------------+-------------
 public | t_ustore | table | gaussdb | 553 MB  | {orientation=row,compression=no,storage_type=USTORE,segment=off,parallel_workers=8} | 
 public | test01   | table | gaussdb | 5614 MB | {orientation=row,compression=no,storage_type=USTORE,segment=off}                    | 
 public | test02   | table | gaussdb | 11 MB   | {orientation=row,compression=no,storage_type=USTORE,segment=off}                    | 
(3 rows)

gaussdb=# \di+
                                           List of relations
 Schema |      Name       | Type  |  Owner  |  Table   |  Size   |        Storage        | Description 
--------+-----------------+-------+---------+----------+---------+-----------------------+-------------
 public | idx_t_ustore_n1 | index | gaussdb | t_ustore | 1739 MB | {storage_type=USTORE} | 
 public | idx_t_ustore_n2 | index | gaussdb | t_ustore | 9176 MB | {storage_type=USTORE} | 
(2 rows)


表膨胀4.3倍
索引1膨胀47倍
索引2膨胀77倍

结论:在有长事务情况下,OpenTeleDB表膨胀30倍+,GaussDB表膨胀4.3倍,在表膨胀方面GaussDB吊打OpenTeleDB,遥遥领先果然厉害。索引膨胀OpenTeleDB比Gaussdb好些,两款数据库都没解决索引膨胀。

OpenTeleDB的XSTORE是大概率是给超高频的单行update场景使用的,此类场景原生PG死翘翘

相关推荐
z***02609 小时前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·sql·gaussdb
DarkAthena13 小时前
【Oracle/GaussDB/MogDB】统一权限查询
数据库·oracle·gaussdb
蒋士峰DBA修行之路3 天前
实验二十八 SQL PATCH调优
数据库·sql·gaussdb
7***99874 天前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·sql·gaussdb
蒋士峰DBA修行之路6 天前
实验二十二 GaussDB分布式场景调优
分布式·gaussdb
蒋士峰DBA修行之路6 天前
实验二十六 GaussDB参数调优
数据库·oracle·gaussdb
蒋士峰DBA修行之路6 天前
实验二十九 dbmind智能运维工具
gaussdb
蒋士峰DBA修行之路6 天前
实验二十四 GaussDB运维与故障处理-SQL慢问题
gaussdb
蒋士峰DBA修行之路7 天前
实验二十三 GaussDB启动失败定位与处理
gaussdb