news 2026/1/14 12:18:01

【openGauss】数据库微观案例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【openGauss】数据库微观案例

本期介绍openGauss系数据库的几个案例:

  1. rowid使用案例
  2. GUC参数非全局设定
  3. hash分区键限制

astore引擎下的rowid使用问题

Oracle迁移经常会遇到rowid兼容性问题:可能是不支持rowid,也可能是rowid类型或行为有差异。

rowid的常用场景:

  • 确保无主键表排序结果稳定性
  • 删除表中的重复记录
  • 方便DML操作定位行

很多openGauss发行版都支持了rowid功能,最近在项目中遇到一个问题,业务使用JDBC驱动pbe方式执行如下语句:

deletefromtab1whererowid=?;

执行计划走了Seq Scan,没走预期的Tid Scan

preparestmt(varchar)asselect*fromtab1whererowid=$1;postgres=# explain execute stmt('nMYAAA==5sAAAA==gAA=');QUERYPLAN--------------------------------------------------------------Seq Scanontab1(cost=0.00..230557.40rows=50000width=36)Filter:(rowid=($1)::rowid)(2rows)

如果直接使用静态值,则能走Tid Scan

postgres=# explain delete from tab1 where rowid ='nMYAAA==5sAAAA==gAA=';QUERYPLAN----------------------------------------------------------Deleteontab1(cost=0.00..4.02rows=1width=6)->Tid Scanontab1(cost=0.00..4.02rows=1width=6)TID Cond:(ctid='(49382,128)'::tid)Filter:(tableoid=50844)(4rows)

在服务端打开rowidexpr_tidscan选项后达到预期:

postgres=# explain execute stmt('nMYAAA==5sAAAA==gAA=');QUERYPLAN---------------------------------------------------------Tid Scanontab1(cost=0.01..4.02rows=50000width=36)TID Cond:(rowid=($1)::rowid)(2rows)

JDBC使用pbe方式如果没开那个选项,PBE方式会走全表扫。

GUC参数非全局设定

哪些GUC参数能使用set进行局部配置,而非cluster全局范围生效呢?

可以使用SET在user、database进行设置,有三种设置形态:

alteruserset...alterdatabaseset...alteruserindatabaseset...

但数据库里并非所有的参数都能使用set在session范围进行设置,否则可能会遇到

  • xxx cannot be changed now
  • xxx cannot be set after connection start

这类错误提示,而当前数据库内核哪些参数可以设置,我们可以使用如下代码提前了解:

DOLANGUAGEplpgsql $do$declarev_rec record;v_sqlvarchar;beginforv_recinselect*frompg_settingswherecontextnotin('internal','postmaster')loopbeginv_sql='alter database postgres set '||v_rec.name||'='||quote_literal(v_rec.setting)||';';executev_sql;raise notice'%',v_rec.name;exceptionwhenothersthen--raise notice 'state=%,error=%',SQLSTATE,SQLERRM;end;endloop;end;$do$;

分布式场景hash分区键问题

openGauss系分布式扩缩容时遇到一个问题,分析定位与分区表hash分区键类型有关。

  • 分区表使用普通的create table方式,hash分区支持分区键支持浮点数类型或时间类型。
  • 分区表使用create table including方式,hash分区分区键只支持整型。

测试语句如下:

  • 普通的create table方式可以成功
createtabletest1(idintegernotnull,widdecimal(4,4))DISTRIBUTEBYHASH(id)PARTITIONBYHASH(wid)(PARTITIONp1,PARTITIONp2,PARTITIONp3);createtabletest2(idintegernotnull,sincetimestamp)DISTRIBUTEBYHASH(id)PARTITIONBYHASH(since)(PARTITIONp1,PARTITIONp2,PARTITIONp3);

test1表的hash分区键为浮点类型,test2表的hash分区键为时间类型。

  • create table including方式失败
CREATETABLEtmp1(LIKEtest1 INCLUDING DISTRIBUTION INCLUDINGPARTITION);CREATETABLEtmp2(LIKEtest2 INCLUDING DISTRIBUTION INCLUDINGPARTITION);

复制test1表分区键类型为浮点型时,tmp1表创建失败,报错:

ERROR:numericfield overflow

复制test2表分区键类型为时间类型时,tmp2表创建失败,报错:

ERROR: invalid input syntaxfortypetimestamp:"2"

这次的分享就到这里,后续会继续分享~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/29 14:22:39

Comtos Linux 哲学导向的意义

【Comtos Linux 哲学导向的意义】 Comtos Linux 哲学导向: 独立之精神‌,自由之思想‌。其核心理念‌,强调个体在思想和精神上保持自主与独立,不受外界束缚。‌‌独立之精神‌:指个体在精神上保持自主判断和坚定立场。…

作者头像 李华
网站建设 2025/12/29 14:21:20

PyTorch-CUDA-v2.7镜像内置nbconvert,轻松转换notebook为html/pdf

PyTorch-CUDA-v2.7镜像内置nbconvert,轻松转换notebook为html/pdf 在深度学习项目开发中,一个常见的场景是:你刚刚完成了一轮模型调优实验,Jupyter Notebook里满屏都是训练曲线、评估指标和可视化结果。现在需要把这份“成果”提交…

作者头像 李华
网站建设 2026/1/3 14:27:08

yolov11实时检测系统搭建:基于PyTorch-CUDA-v2.7全流程

YOLOv11 实时检测系统搭建:基于 PyTorch-CUDA-v2.7 的全流程实践 在智能安防、工业质检和自动驾驶等前沿领域,实时目标检测早已不再是“有没有”的问题,而是“快不快、准不准、稳不稳”的工程博弈。一个能稳定输出 30 FPS 以上、精度不打折的…

作者头像 李华
网站建设 2025/12/29 14:10:02

大规模GPU算力调度平台推荐使用PyTorch-CUDA-v2.7标准镜像

大规模GPU算力调度平台为何青睐PyTorch-CUDA-v2.7标准镜像? 在AI研发从“小作坊式实验”迈向“工业化流水线”的今天,一个现实问题始终困扰着团队:为什么同一个模型代码,在A同学的机器上跑得好好的,放到集群里却频频报…

作者头像 李华
网站建设 2026/1/8 22:28:10

PyTorch-CUDA-v2.7镜像支持分布式训练,轻松扩展至多节点

PyTorch-CUDA-v2.7 镜像:让分布式训练从“难搞”变“好用” 在今天的大模型时代,动辄千亿参数的神经网络早已不是单张 GPU 能扛得动的。你有没有经历过这样的场景?——本地调试完的小模型,一放到集群上跑就报错;同事复…

作者头像 李华
网站建设 2026/1/2 8:50:01

技术托举一线力量,温度赋能服务升级——用友HR SaaS专访永升服务人力资源行政中心总经理盛露妮!

洁净通畅的社区街巷、平稳运行的电梯设备、突发需求的及时响应,物业服务早已深度融入日常生活,成为守护美好生活的重要基石。但这份“近在咫尺”的便捷背后,却暗藏着物业行业的发展痛点与转型挑战。作为典型的劳动密集型行业,物业…

作者头像 李华