首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >电信天翼云开源 XStore 数据库镜像

电信天翼云开源 XStore 数据库镜像

作者头像
用户4035096
发布2026-07-09 20:47:45
发布2026-07-09 20:47:45
120
举报

为了体验电信 OpenTeleDB 开源 XStore, 做了个 Docker 镜像 OpenTeleDB 项目介绍 https://github.com/OpenTeleDB/OpenTeleDB 天翼云OpenTeleDB是在中国电信云改数转大背景诞生的,结合TeleDB在电信集团业务和天翼云客户实战打磨的企业级特性,着重解决PostgreSQL存在的并发连接瓶颈,存储空间膨胀,高可用切换的外部依赖等问题。OpenTeleDB本次新增XProxyXStoreXRaft三大能力,并完美兼容PostgreSQL,基于PostgreSQL的相关业务系统可以无缝的迁移到OpenTeleDB。

  • XProxy:能够提供十万级原生连接上限的接入能力,支持自动读写分离与负载均衡,实现系统的横向扩展,提升整体性能与可用性,让资源利用更充分。
  • Xstore:相较于原生PostgreSQL在高并发更新下,因MVCC机制易导致存储空间持续膨胀,且周期性Vacuum回收会引发性能剧烈波动,执行TPCC模型时性能波动常超40%。OpenTeleDB通过XStore存储引擎对存储层进行全链路重构:通过原位更新Undo日志管理,从根本杜绝空间膨胀,表空间占用几乎零增长;同时对索引采用原位更新,彻底告别扫表式Vacuum,将执行TPCC模型时性能波动压制在5%以内。
  • XRaft:在数据库核内完成自动高可用,杜绝脑裂,而不依赖第三方外部组件,结构简单,有效保障业务高可用。

为了体验电信openteledb 开源PG XStore, 做了个docker镜像 制作镜像 略 arm64 image docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:openteledb-17-arm64 x86_64 image docker pull registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:openteledb-17-amd64 用起来: mkdir -p ~/openteledb_docker_data1 cd ~/openteledb_docker_data1 PG_DATA=`pwd` PG_USER="postgres" PG_PASSWORD="123456" docker run -d -it -p 0.0.0.0:5433:5432 --add-host=host.docker.internal:host-gateway \ -u root -w /var/lib/postgresql -e LANG=en_US.utf8 \ -e POSTGRES_INITDB_ARGS="-E UTF8 --locale=C --lc-ctype=en_US.utf8" \ -v $PG_DATA:/var/lib/postgresql/data \ -e PGDATA=/var/lib/postgresql/data \ --cap-add=SYS_PTRACE --cap-add SYS_ADMIN --privileged=true --shm-size=1g \ -e POSTGRES_USER=$PG_USER -e POSTGRES_PASSWORD=$PG_PASSWORD \ --name openteledb-test1 \ registry.cn-hangzhou.aliyuncs.com/digoal/opensource_database:openteledb-17-arm64 XStore vs HEAP 测试 修改配置文件 psql \! echo "shared_buffers = 2GB maintenance_work_mem = 1GB autovacuum_work_mem = -1 synchronous_commit = off wal_writer_delay = 10ms max_wal_size = 6GB min_wal_size = 1GB autovacuum = on autovacuum_max_workers = 3 autovacuum_vacuum_cost_delay = 2ms autovacuum_vacuum_cost_limit = -1" >> /var/lib/postgresql/data/postgresql.auto.conf 重启容器后继续测试 create extension if not exists xstore ; drop table if exists tbl_xstore ; create table tbl_xstore (id serial primary key, info text, ts timestamp) using xstore; insert into tbl_xstore (info, ts) select md5(random()::text), clock_timestamp() from generate_series(1,5000000); select pg_size_pretty(pg_total_relation_size('tbl_xstore')); pg_size_pretty ---------------- 570 MB -- 主要是 xbtree 索引较大, 未来有文章来分析xbtree索引为什么更大? (1 row) drop table if exists tbl_heap ; create table tbl_heap (id serial primary key, info text, ts timestamp) using heap; insert into tbl_heap (info, ts) select md5(random()::text), clock_timestamp() from generate_series(1,5000000); select pg_size_pretty(pg_total_relation_size('tbl_heap')); pg_size_pretty ---------------- 472 MB (1 row) xstore 表更新压测 \! echo "\set id random(1,5000000) update tbl_xstore set info=md5(random()::text), ts=clock_timestamp() where id=:id;" > ~/xstore.sql \! pgbench -M prepared -n -r -P 1 -f ~/xstore.sql -c 8 -j 8 -T 300 heap 表更新压测 checkpoint; \! echo "\set id random(1,5000000) update tbl_heap set info=md5(random()::text), ts=clock_timestamp() where id=:id;" > ~/heap.sql \! pgbench -M prepared -n -r -P 1 -f ~/heap.sql -c 8 -j 8 -T 300 对比更新效率和膨胀率 引擎更新 tps膨胀率xstore1078310 (570MB 大小无变化)heap1043606.1% (472MB 膨胀到 501MB) 更新抖动情况: XStore 比 HEAP 平稳. 由于 heap 开始膨胀, 相信如果持续拉长测试时间, xstore的表现会更好.

把 XStore 打爆了, 啥情况? 后又运行了3000秒的以上 update 负载, heap 表膨胀到507MB后不再膨胀, 而xstore表崩溃了. 报如下日志: INFO: undo record discontinuous,logno 131073, buffer 77453, startingByte 601, page start 24, page end 8192, alreadyWritten 0, lastPageWritten 0, diffpage true, urp 9223442407746503257, newpage true. -- AI 认为是如下参数配置太小, 但实际上已经很大. 可能是 bug? postgres=# show xstore.undo_max_size_per_transaction; xstore.undo_max_size_per_transaction -------------------------------------- 32GB (1 row) postgres=# show xstore.undo_max_total_size; xstore.undo_max_total_size ---------------------------- 256GB (1 row)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-01-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 digoal德哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为了体验电信 OpenTeleDB 开源 XStore, 做了个 Docker 镜像 OpenTeleDB 项目介绍 https://github.com/OpenTeleDB/OpenTeleDB 天翼云OpenTeleDB是在中国电信云改数转大背景诞生的,结合TeleDB在电信集团业务和天翼云客户实战打磨的企业级特性,着重解决PostgreSQL存在的并发连接瓶颈,存储空间膨胀,高可用切换的外部依赖等问题。OpenTeleDB本次新增XProxy、XStore、XRaft三大能力,并完美兼容PostgreSQL,基于PostgreSQL的相关业务系统可以无缝的迁移到OpenTeleDB。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档