-
gaussdb的大事务会对备库的恢复延时有影响吗(类似mysql的大事务对主备延时的影响)?
-
云GaussDB关系型集中式是否支持时序引擎? 看文档时序引擎相关的指导,要么在Gemini,要么在DWS,那么GaussDB关系型集中式数据库是否支持时序引擎?
-
为深化产教融合,推动华为根生态技术深度融入课堂教学,提升教师实践教学能力,近日,“2026年华为师资培训-GaussDB方向(武汉大学)活动在武汉大学举办。本次活动,基于2025年第二批教育部产学合作协同育人华为开发者空间师资培训项目,围绕华为开发者空间、GaussDB等技术开展。吸引多所高校专业教师、教学骨干参与,采用理论讲解+实操演练的形式。培训现场学习氛围浓厚,课程内容层层递进、紧贴高校教学实际。刘浩文老师首先介绍华为开发者空间的功能与使用方法。该平台汇聚昇腾、鸿蒙、鲲鹏、GaussDB、欧拉等华为根技术资源,讲师现场演示账号注册、云开发环境部署、与 Token 资源申领等操作,并讲解桌面版、虚拟机版、容器版三类环境的适用场景,为高校开展线上实验教学、课后实训提供了可靠的平台支撑。随后,课程围绕 GaussDB 数据库展开。刘浩文讲解了数据库云化选购、部署安装及基础操作,针对传统数据库本地部署繁琐、实验环境难以统一等教学难题,剖析 GaussDB 云化方案的优势,结合实操演示数据库连接、权限配置、基础对象创建等常用功能,帮助参训教师快速掌握基础应用技能。刘斌老师讲解 GaussDB 架构体系、核心特性、数据迁移与运维技术,详细介绍分布式架构、主备部署、高可用及异地容灾等能力,结合教学场景,演示数据导入导出、异构数据迁移及故障排查技巧。在数据库查询与性能优化专题中,他结合大量实战案例,解读执行计划、索引设计、慢 SQL 调优、事务隔离级别等核心知识点,分享 SQL 改写、CTE 优化等实用方案,进一步丰富了教师的课堂教学案例。下午,培训进入应用开发与集成实践环节。刘斌老师讲解 GaussDB 应用开发实战内容,演示 JDBC 连接、读写分离、节点故障切换等开发流程,分享自定义函数、批量数据生成、数据分析等拓展应用案例,为课程设计、综合实训提供参考。同时,刘浩文老师讲解了 Spark 与 GaussDB 集成开发方案,提供完整代码示例与大数据应用案例,详解环境配置、数据交互、性能调优等关键内容,助力教师优化大数据相关课程。华为云高校团队带来华为云码道(CodeArts)代码智能体专题分享,介绍产品性能、核心功能以及在高校日常教学、作业实训中的应用模式,并面向参训教师开展“2026年度中国青年科技创新‘揭榜挂帅’擂台赛”码道赛题宣讲,解读赛事规则、备赛资源,鼓励老师推荐学生依托平台以赛促学,锤炼工程实践能力。本次培训是高校与华为云深化产学合作协同育人的重要实践。下一步,双方将持续发挥各自优势,携手推进新工科课程改革,共建优质教学资源与实践体系,不断培养契合数字产业发展需求的高素质信息技术人才。
-
干货全拿走,学会就涨薪” 先立flag,后面慢慢写
-
干货全拿走,学会就涨薪”
-
很多人使用云数据库时,总会遇到账单莫名超标、预算失控的问题,核心原因就是分不清按流量、按存储、按时长三种主流计费模式的差异。简单来说,时长计费看服务开通时间、存储计费看数据占用空间、流量计费看数据传输体量,三者计费维度、成本结构、适配场景完全不同。选对计费方式能大幅节约成本,选错极易出现闲置亏钱、超量扣费的情况。本文通俗拆解三种计费模式,帮大家精准避坑、按需选型。 一、按时长计费:最通用的基础计费模式按时长计费是云数据库最基础、最普及的计费方式,也常被称作包年包月、按量计时计费。它的核心计费逻辑是只根据数据库实例的配置和开通时长收费,和数据存储大小、数据传输流量无关。这种模式会提前锁定CPU、内存、连接数等核心计算资源,开通后无论是否使用、有无数据读写、是否产生流量,都会按固定周期扣费。主流分为月付、年付、日付、小时付四种形式,年付通常性价比最高,小时付适合短期临时使用。优点:账单稳定无波动、预算可控,资源独享不抢占,适合长期稳定业务;缺点:闲置期间照样扣费,资源灵活性差,业务波动大时容易浪费资源。适配场景:企业正式官网、长期运营业务、稳定读写的生产环境、固定负载的数据库服务。二、按存储计费:只对“存量数据”收费按存储计费的核心逻辑是根据数据库实际占用的磁盘空间计费,计费单位通常为GB/天、GB/月,统计范围包含业务数据、索引、日志、备份文件等全部占用空间。该模式不看运行时长和读写流量,只要数据留存占用服务器空间,就会持续计费。同时区分热存储和冷存储,热存储适配高频读写,单价偏高;冷存储适配归档数据、低频备份,单价极低,是节约成本的关键。优点:零数据零成本,闲置无浪费,适合数据量小、动态增减的场景;缺点:长期累积海量数据后,存储成本会持续攀升,高频读写业务性价比偏低。适配场景:数据归档、日志存储、低频查询业务、测试环境、数据量波动大的临时项目。三、按流量计费:针对“数据传输”精准扣费按流量计费是按量付费的核心模式,计费依据是数据库对外传输、交互的数据体量,主要包含公网出入流量、数据同步流量、备份迁移流量等。内网私有网络交互流量大多免费,仅对外公开传输计费。简单理解:数据库静态存放不收费,只要有数据读取、下载、对外同步、页面访问数据调取,就会产生流量扣费,流量越大账单越高,无流量则无费用。优点:极致灵活,零流量零费用,适合突发流量、间歇性业务;缺点:流量不可控,大促、爆量场景下账单会暴涨,预算极难把控。适配场景:开发测试、临时活动、突发流量业务、低频访问、间歇性使用的数据库服务。四、三种计费方式核心对比&选型结论1. 长期稳定生产业务、追求预算可控:优先按时长计费,锁定资源、杜绝突发账单,综合性价比最高;2. 数据量大、读写低频、以归档备份为主:优先按存储计费,搭配冷存储大幅降低长期成本;3. 临时测试、突发活动、流量不稳定:优先按流量计费,随用随停,避免资源闲置浪费。五、通用避坑技巧多数云数据库并非单一计费模式,而是时长+存储+流量组合计费。常规实例按时长收资源费,超额存储、超额公网流量单独按量扣费。日常使用中,建议定期清理冗余日志、过期备份,区分内外网流量,根据业务周期切换计费模式,从根源降低数据库使用成本。
-
请问下wait transaction sync 和 wait wal sync 的出现场景和原因是怎样的呢?两个等待事件都是和主备同步相关吗?
-
“干货全拿走,学会就涨薪”《GaussDB实战指南》之 玩转GaussDB数据库审计统一审计1.切换至Ruby用户。su - Ruby2. 进入沙箱模式并设置环境变量。/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_file3.配置GUC 参数gs_guc relaod -Z datanode -N all -I all -c "enable_security_policy= on" -- 集中式gs_guc relaod -Z Coordinator -Z datanode -N all -I all -c "enable_security_policy= on" -- 分布式4. 配置服务文件(root 用户)/etc/rsyslog.conf中添加 local0.* /var/log/localmessages修改/etc/rsyslog.conf中字段module(load="imuxsock"SysSock.Use="on")5. 配置文件权限(root 用户)touch /var/log/localmessageschmod 600 /var/log/localmessages6.重启审计服务(root 用户)systemctl restart rsyslog7.创建安全管理员策略 pol_user_adtCREATE USER pol_user_adt with poladmin password 'Gauss@123'; 8.创建普通用户CREATE USER adt_user1 password 'Gauss@123';CREATE USER adt_user2 password 'Gauss@123';9.在public模式下创建表tb_for_audit,并授予adt_user1对此表的所有操作权限CREATE TABLE public.tb_for_audit(col1 text, col2 text, col3 text);GRANT ALL PRIVILEGES on public.tb_for_audit to adt_user1 WITH GRANT OPTION;10.使用pol_user_adt登录数据库,在表public.tb_for_audit上创建资源标签lab1CREATE RESOURCE LABEL lab1 ADD TABLE(public.tb_for_audit);11.创建审计策略,审计用户adt_user1在资源标签lab1上的所有DDL、DML操作CREATE AUDIT POLICY pol1 PRIVILEGES all on LABEL(lab1) FILTER ON ROLES(adt_user1);CREATE AUDIT POLICY pol2 ACCESS all on LABEL(lab1) FILTER ON ROLES(adt_user1);12.使用adt_user1登录数据库,执行DDL操作,触发审计策略记录审计日志GRANT INSERT ON TABLE public.tb_for_audit to adt_user2;REVOKE INSERT ON TABLE public.tb_for_audit from adt_user2;13.使用adt_user1登录数据库,执行DML操作,触发审计策略记录审计日志insert into public.tb_for_audit values('11', '22', '33');update public.tb_for_audit set col3='55' where col1='11';select * from public.tb_for_audit;delete from public.tb_for_audit where col1='11';14.查看审计日志记录cat /var/log/localmessages 传统审计1.切换至Ruby用户 su - Ruby2.进入沙箱模式并设置环境变量。/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_file3.修改审计对象GUC参数audit_system_object的值为12,表示审计TABLE和USER对象的CREATE、DROP、ALTER操作。 gs_guc reload -Z datanode -N all -I all -c "audit_system_object=12"开启dml 审计gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_dml_state=1gs_guc reload -Z coordinator -Z datanode -N all -I all -c "audit_dml_state_select=14.root用户创建审计管理员audit_user和普通用户uesr1,audit_user用于查询审计日志,创建普通用户user1用于执行SQL操作。CREATE USER auditadmin with AUDITADMIN password 'Gauss@123';CREATE USER audit_t1 password 'Gauss@123';5.使用audit_t1登录数据库,创建数据表t1并插入数据然后添加一列name,再删除t1。create table t1 (id int);insert into t1 values(123);alter table t1 add column name varchar(20);select * from t1;drop table t1;6.审计用户登录数据库查询 audti_t1 用户的操作 select * from pg_query_audit (sysdate - interval'10 min',sysdate)where username = 'audti_t1';
-
先给核心结论,避免大家绕弯子:稳定高负载选包年包月,波动大、短期用选按需付费。很多人选型时只看单价,忽略了自身业务场景,最后要么多花冤枉钱,要么遇到突发需求被限流,反而得不偿失。今天从价格、场景、风险、灵活性四个核心维度,用通俗的话讲清两者的区别,帮你精准避坑,选到最省钱的方案,全程客观分析,不掺任何品牌倾向。 先澄清一个误区:没有绝对“更省钱”的方案,只有“更适配”的方案。两者的核心差异,本质是“长期稳定投入”和“短期灵活投入”的博弈,不同业务场景下,性价比天差地别,我们先从最直观的价格维度拆解。一、价格对比:单价vs总价,算对账才不亏这是大家最关心的点,直接上干货,用通俗的方式算清成本(无具体定价,只讲逻辑,适配所有云数据库):1. 包年包月:单价低,总价固定,有长期优惠。通常包年能省20%-30%,包月比按需单日折算便宜10%-15%,相当于“批发价”。比如同一配置,按需单日折算100元,包月可能只要2500元,包年甚至能降到24000元,适合长期用的场景。但有个前提:必须长期稳定使用,一旦中途停用,剩余费用通常不退还,相当于“买了不能退的套餐”。2. 按需付费:单价高,总价随使用量波动,无长期绑定。相当于“零售价”,用多少算多少,比如当天用2小时就只收2小时的钱,闲置时不花钱。但单日折算单价远高于包年包月,比如长期每天使用,一个月下来,按需的费用可能是包月的1.5-2倍,长期用会很不划算。补充:很多人会忽略“隐藏成本”——包年包月通常有固定配置,升级配置需要额外付费;按需付费虽然灵活,但峰值时段可能有溢价,且部分服务商有最低计费门槛(比如按小时计费,不足1小时按1小时算)。二、场景对比:对号入座,避免选错选对场景,就省了一半的钱,这两个场景精准对应,新手直接对号入座即可:✅ 包年包月适合这些情况:- 业务稳定:比如企业官网、长期运营的APP、稳定的后台系统,数据库负载波动小,每天使用时长固定(比如8-24小时不间断运行)。- 长期使用:计划使用6个月以上,越长越划算,尤其是包年,优惠力度最大,适合有明确长期规划的业务。- 预算固定:企业财务有明确的月度、年度预算,包年包月能锁定成本,避免后期费用波动,方便对账。❌ 不适合:短期测试、临时项目(比如只用1-3个月)、负载波动极大(比如偶尔峰值拉满,大部分时间闲置)的场景,强行选包年包月会浪费钱。✅ 按需付费适合这些情况:- 短期使用:比如项目测试、临时活动(比如节日促销、短期调研),使用时长不确定,可能只用几天或几个星期。- 负载波动大:比如创业初期的产品、小众工具类APP,平时负载低,偶尔有突发流量(比如突然爆火),按需付费可以避免闲置时的浪费,峰值时按需扩容。- 试错阶段:不确定业务能否长期运营,不想长期绑定,先按需使用,验证业务可行性后,再切换到包年包月。❌ 不适合:长期稳定高负载的业务,长期使用的话,费用会远超包年包月,性价比极低。三、灵活性与风险对比:避坑关键的细节除了价格和场景,灵活性和风险也不能忽视,很多人栽在这两个细节上:1. 灵活性:按需付费完胜。按需付费可以随时开启、关闭,配置可以随时升降级,比如突发流量时临时升级内存、带宽,流量过后再降回来,完全贴合业务波动;包年包月的配置通常是固定的,升级需要额外付费,降级一般不支持,且中途无法随意停用,灵活性较差。2. 风险:包年包月更稳,按需付费有波动风险。包年包月能锁定价格,即使后期服务商涨价,也不会影响已购买的套餐,适合预算敏感、追求稳定的用户;按需付费的价格可能随市场波动(比如峰值时段溢价),且如果遇到业务突发增长,未及时调整配置,可能出现限流、宕机,影响业务正常运行。四、避坑总结:新手必看的选型技巧1. 先算“使用时长账”:预计使用时长≥6个月,优先包年包月;<6个月,优先按需付费,避免浪费。2. 再算“负载波动账”:负载波动≤30%(稳定),选包年包月;波动>50%(不稳定),选按需付费,兼顾灵活与省钱。3. 避免两个极端:不要为了便宜,强行选包年包月(短期用会浪费);也不要为了灵活,长期用按需付费(长期会多花钱)。最后补充一句:很多服务商支持“按需转包年包月”,如果前期不确定业务走向,可以先按需使用,验证可行性后再切换,既避免风险,又能节省成本。核心还是“按需选型”,不盲目追求低价,也不盲目追求灵活,贴合自己的业务需求,才是最省钱的选择。
-
“干货全拿走,学会就涨薪” 账本数据库设置启用账本数据库参数```su - Ruby/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_filegs_guc reload -Z coordinator -Z datanode -N all -I all -c "enable_ledger=on";```在数据库中创建防篡改Schema```CREATE SCHEMA blocks WITH BLOCKCHAIN;```创建账本表。```CREATE TABLE blocks.t1(id int, name varchar);```更新、删除账本表中的数据```INSERT INTO blocks.t1 VALUES(1, 'alex');INSERT INTO blocks.t1 VALUES(2, 'bob');SELECT *, hash_83f153 FROM blocks.t1;UPDATE blocks.t1 SET name = 'bob2' WHERE id = 2;DELETE FROM blocks.t1 WHERE id = 1;SELECT *, hash_83f153 FROM blocks.t1;```查询历史表```SELECT * FROM blockchain.blocks_t1_hist;历史表表名可以通过 \d+ 表名看到```查看历史摘要```SELECT * FROM gs_global_chain;```校验账本表、历史表和全局表:```SELECT pg_catalog.ledger_hist_check('blocks', 't1');SELECT pg_catalog.ledger_gchain_check('blocks', 't1');如果校验通过,函数返回t,反之则返回f。```与普通表交互从普通表插入数据```create table blocks.tt2 (like u1.t2 including indexes ) ;insert into blocks.tt2 select * from u1.t2;```插入数据到普通表```create table u1.tt2 (like u1.t2 including indexes ) ;insert into u1.tt2 select * from blocks.tt2;```参数改回 off ```su - Ruby/usr/sbin/chroot /var/chrootsource /home/Ruby/gauss_env_filegs_guc reload -Z coordinator -Z datanode -N all -I all -c "enable_ledger=off";
-
原来理解 gaussdb 支持postgre 是自然的事情,但是我们公司dba 反馈说 guassdb 未来可能不支持postgre 兼容模式,只支持oracle 和mysql 模式想确认是不是真的,原有基于postgre 开发了大量的存储过程等,迁移很麻烦
-
GaussDB高并发场景由于FASTPATH_PART参数引发锁等待导致数据库运行缓慢问题一、案例背景近期引发由于FASTPATH_PART默认参数过小引发锁等待导致数据库语句运行缓慢问题,可关注该参数设置,避免因默认参数未调整引发业务缓慢问题。二、案例描述业务侧多条语句大量等锁,其等待事件为LockMgrLock。处于LockMgrLock状态表示当前会话要对常规锁结构进行加锁,没有走fastpath流程。fastpath加锁流程(FASTPATH_PART:每个线程可以不通过主锁表拿锁的最大锁个数。)由于前三级锁之间没有任何冲突,为了减少加锁的代价,在一定不会出现冲突的前提下,前三级锁可以走fastpath流程。fastpath锁为线程内部资源,加锁效率高,在业务的并发量大,单事务访问的表数量多的场景下,会占用更多的fastpath资源。高并发场景使得fastpath数组被占满,导致后续对其他表加锁无法通过fastpath,大量并发线程走主锁表,进而导致出现大量LockMgrLock等待事件,导致业务运行缓慢。三、定位过程1、 查看卡顿时间点,发现有大量LockMgrLock等待事件。2、通过查询会话相关视图,发现现场环境活跃会话数量达到500多。3、查看gs_asp报告,可以看出从15:34开始,业务并发数上涨。4、XX业务量相对之前有所增加,查看监控确实相比之前增多。5、查看DN日志发现,提示fastpath资源不足大量并发线程走主锁表需要调整参数,进而出现大量LockMgrLock等待事件。四、处理建议参数作用:num_internal_lock_partitions 定义了锁管理器的分区数,旨在减少全局锁LockMgrLock的竞争。其中一部分分区(由 FASTPATH_PART 定义,这里是20)专门用于管理可以走fastpath的锁对象。问题所在:每个需要走fastpath的锁对象(如表、页、元组)会根据其哈希值映射到这20个fastpath分区中的一个。当一个事务/语句需要获取的fastpath锁对象数量过多(例如,由于扫描了400个分区,需要锁定大量表、页或元组),可能会占满或超出其对应的fastpath分区槽位。一旦超出限制,多余的锁请求无法再享受fastpath的优惠,必须回退到主锁表去申请。后果:FASTPATH_PART=20的设置在高并发、多分区扫描的场景下显得过小,大量本可以快速处理的锁请求被迫加入主锁表的竞争行列。num_internal_lock_partitions参数说明:控制内部轻量级锁分区的个数。主要用于各类场景的性能调优。•参数内容以关键字和数字的KV方式组织,各个不同类型锁之间以逗号隔开。•先后顺序对设置结果不影响。例如"CLOG_PART=256,CSNLOG_PART=512"等同于"CSNLOG_PART=512,CLOG_PART=256"。•重复设置同一关键字时,以最后一次设置为准。例如"CLOG_PART=256,CLOG_PART=2",设置的结果为CLOG_PART=2。参数类型:字符串参数单位:无取值范围:•CLOG_PART:CLOG文件控制器的个数。最小值为1,最大值为256。•CSNLOG_PART:CSNLOG文件控制器的个数。最小值为1,最大值为512。•LOG2_LOCKTABLE_PART:常规锁表锁分区个数的2对数。最小值4,即锁分区数为16;最大值为16,即锁分区数为65536。•TWOPHASE_PART:两阶段事务锁的分区数。最小值为1,最大值为64。•FASTPATH_PART:每个线程可以不通过主锁表拿锁的最大锁个数。最小值为20,最大值为10000。默认值:"CLOG_PART=256,CSNLOG_PART=512,LOG2_LOCKTABLE_PART=4,TWOPHASE_PART=1,FASTPATH_PART=20"设置方式:该参数属于POSTMASTER类型参数。设置建议:FASTPATH_PART:对于分区表读取、更新、插入、删除操作且等待事件在LockMgrLock时,可以通过调大该值避免获取LockMgrLock提升性能,建议调整数量大于等于分区数*(1+本地索引数量)+全局索引数量+10,调大该值可能增加锁转移和锁消除时的耗时,并会额外增加内存。fastpath增量内存=((fastpath增加量/20)*8 + fastpath增加量*12) * 线程池大小,单位是字节。参数修改需要重启数据库,需要在150< FASTPATH_PART<800范围内修改,调大该值可能增加锁转移和锁消除时的耗时,并会额外增加内存,调整前需测试充分后再到生产环境实施。五、问题触发原理数据库中用户对 object 进行操作时,需要持有对应对象的常规锁,因为常规锁通常在共享区中,为了保护锁获取满足 ACID,通过内部轻量级别锁 LockMgrLock进行保护。为了提升并发性能,在每个会话本地会有本地锁资源缓冲区(fast path),针对低级别锁,可以优先在本地缓冲区中不用进入共享区。本地fast path 可以容纳 20 个低级别锁,超过 fastpath 后,需要存入共享区。存入共享区时,会优先持有 LockMgrLock,此锁为分区锁,通过分区的机制来实现减少锁冲突。在高并发、多分区扫描的场景下默认参数过小,大量本可以快速处理的锁请求被迫加入主锁表的竞争行列,导致数据库缓慢运行。
-
有如下两个视图,查询出来结合产品文档看含义不太明白。一、gs_all_control_group_info视图SELECT * FROM gs_all_control_group_info;type为TSWD代表什么意思?class和workload是什么关系?包含关系吗?shares和limits的区别是啥?何为配额何为限额?控制组层级又是什么含义?看产品文档看的一头雾水,能否出个博客专门普及一下基础知识,并说明一下gaussdb的控制组功能运行逻辑?二、gs_wlm_cgroup_info视图select * from GS_WLM_CGROUP_INFO;priority作业优先级,各个值是怎么来的?值越大优先级越低吗?-1代表什么意思?usage_percent为何都是0?各个控制组shares的值怎么计算的?
-
2024年9月和10月在华师的数据库课堂指导学生利用CodeArt Req进行领域建模,画出系统的类图,42名同学利用工具,12名同学能够在较短的时间自己摸索工具的使用,完成作业。详细资料见链接。通过网盘分享的文件:Code Art链接: https://pan.baidu.com/s/1ejRwDeR3DzRgHG9qiaPQ2w?pwd=axci 提取码: axci
-
gaussdb集中式主备版,pg_stat_replication视图的以下字段如何理解?接收端write具体是指写到哪里?flush是在做什么?replay是在做什么?麻烦稍微回答细致一些,感谢!
推荐直播
-
华为云码道Skill实战与极速交付,智能开发全链路实战2026/07/22 周三 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;姜浩-华为云HCDG核心组成员
直播深度解读华为云码道6月产品新特性,从Skill市场安装专家技能,带你零距离体验从需求,开发,审查,重构全链路闭环的开发过程。从零构建并交付一个完整项目,让您体验从代码提交到服务上线的“极速”之旅。
回顾中 -
聚开发者之力,创具身新未来2026/07/23 周四 15:00-17:00
张豪杰/程文/王军/刘新春/黄钦开 /张晓天
本次华为云具身智能开发平台CloudRobo培训面向具身智能开发者,带您全流程体验机器人本体R2C小时级接入、环境重建与轨迹生成仿真数据生产、PB级数据管理、数据评测、模型训推、强化学习和Benchmark一键评测等功能,并体验业界主流具身模型应用。
回顾中
热门标签