• [活动&公告] GaussDB数据库内核培训圆满落幕,助力数据库产业生态人才破局
    8月5日-6日,由清华大学和华为联合主办的“GaussDB数据库内核原理与实现导教班”培训活动在华为云贵安数据中心成功举办。本次培训由清华大学计算机系长聘教授、系副主任,CCF数据库专委会副主任李国良担任讲师,集结了国内49所知名高校的64位资深老师,涵盖25所985院校,产教融合,共同推动国内数据库的发展。华为云数据库服务产品部总经理苏光牛对老师们的到来表示了热烈的欢迎,并致辞表示:今天的国际大环境给了国内数据库更多自主创新、突破根技术的机会,意味着数据库人才的市场需求也变得更大。华为在数据库领域积累了很多年,自主创新的GaussDB数据库已经广泛应用在金融、政企等关键领域中,这些使用了GaussDB的客户同样也需要更专业的数据库人才。而数据库内核人才的发展不存在年龄的限制,人才的培养也离不开老师们的投入。同时,更多关基行业都需要完成核心系统的自主创新。华为完成ERP系统的全面替换、上线600多套GaussDB数据库的事实说明GaussDB完全有能力来支撑更多关基行业的需求,未来也要成为世界的一个更优选择。数据库是生态型产业,今天的导教班活动也是数据库生态中的一部分,未来也将持续办下去,希望老师们和GaussDB一起展开更多探索和合作,培养更多专业的数据库人才,真正帮助中国的根技术实现彻底的突破。在为期两天的培训课上,李国良教授循序渐进地对本次导教班的教学内容进行了全面的介绍,不仅从整体出发,对数据库的系统架构、发展历史和未来趋势做了详细的阐述,深化老师们对数据库整体概况的宏观认识,又从细节入手,讲解了数据库的模型和存储引擎的原理,并深化到数据库的事务处理、恢复、并发控制、索引,以及优化器和执行器等内容,通过深入浅出的讲解,帮助老师们更深刻地了解数据库内核的原理和实现途径,从而更好地应用到未来数据库的课程教学中。此外,李国良教授还介绍了当前清华大学开设数据库内核课程的教学实践成果。当前,清华大学基于数据库实验平台,已经设计了5次关于数据库内核开发的课程实验,实验框架提供了数据库总体的运行框架和大部分编码,让学生们基于该教学实验平台,通过补全各个模块来拓展数据库功能,最终实现一个相对完整的数据库系统。数据库的原理已经非常成熟,重点在于如何突破更多数据库根技术,形成产品的核心竞争力。对此,华为数据库技术研发总监宋涛对GaussDB数据库的核心关键技术进行了介绍:高性能:基于Ustore存储引擎,在业务长时间频繁更新的状态下依然保持高性能和极低抖动,在招商银行的现场实测中,GaussDB在性能遥遥领先的前提下,相比国内其他厂商抖动率减少85.6%,同时存储空间的利用率提升了17%。高可用:联合工行,业界首创了基于存算分离的双集群强一致RPO=0方案,保障任何软硬件故障完全隔离,如今该方案已经支撑工行5A级的信贷系统上线,满足业务7*24小时业务连续性要求;高弹性:实现了基于“HashBucket+段页式”的在线扩缩容,扩容过程中支持暂停和中断续扩,且扩容期间将业务响应时延和吞吐量影响控制在5%以内,扩容时间预估的准确度也做到了分钟级;高安全:实现了基于密文数据的检索与计算,对数据进行全流程加密,保障数据的极致安全,当前,该能力已经在华为ERP场景中商用落地,实现了绝密数据的全流程安全可信;高智能:业界首创的智能优化器让业务运行状态持续保持计划最优,性能体验越来越好,智能运维平台提供一站式的数据库内核运维管理能力,让运维人工成本从天级下降到分钟级;易部署:通过部署内核多租户能力,对租户间的资源进行隔离,让企业应用成本更低,资源利用率、安全性和灵活性更高;易迁移:有高度的语法兼容性和一站式迁移解决方案,可以通过UGO进行语法转换,通过兼容性能力提供原生的内核接口,通过DRS对数据进行实时迁移和校验,让企业的整个迁移工作更确定、更高效。宋涛还提到,GaussDB将加大和国内及海外高校的联合,进行更多的技术合作,并持续梳理产业难题,形成开放性的课题,进行难题揭榜,通过全球智力解决行业难题,为数据库产业创造更多价值。除了理论教学之外,华为云数据库生态工具研发总监窦德明详细地为老师们介绍了华为云GaussDB的一站式迁移解决方案,并现场演示了如何在云上创建GaussDB数据库,通过实践操作,带老师们亲身体验如何快速便捷地进行数据迁移和同步,更深刻地感受GaussDB一站式迁移解决方案的便捷性和优势。华为高斯数据库专家周兆琦现场进行了优化器案例演示,理论与实战结合,分别从内核Cost Model、Query Rewrite、Plan Hint三个方面演示了GaussDB的优势案例,性能提升效果明显,展示了GaussDB的核心竞争力。培训之余,参培老师们集体参观了华为云贵安数据中心。该数据中心的建设,同样也使用了很多根技术。GaussDB作为华为云服务数据使能中的生产交易系统和业务分析系统,为企业应用提供稳定高效的数据存储与处理能力,以及海量数据处理与分析能力,如今已经深入到金融、政府、电信、能源、交通、医疗、物流等各行各业,持续加速客户数字化转型进程。加深产学融合,推动数据库产业健康发展,是华为云GaussDB一直坚持的方向。如今,GaussDB已经在全国110多所高校开设了170多门数据库课程,持续为数据库产业的发展注入新鲜力量,并汇聚了完善的数据库产业链上下游企业,加厚整体的数据库技术底盘。华为云GaussDB也将继续坚守初心,不断深化产学研用深度融合,助力数据库产业生态人才破局。
  • [问题求助] 关于高斯update语句更新后,查询的数据会发生位置变化的问题
    我有个表t,表结构是自增id,列c1,列c2。一共有10条数据。现在有个问题就是,如果是mysql直接对这个第5条进行update,更新完成后这条数据用select查询这个第五条还是在原来位置,但是高斯不是这样,update更新了第五条后,这条数据查出来就是在第10条的位置上了,原来在第六条的位置依次上移,就比如开始是1,2,3,4,5,6,7,8,9,10这样显示的结果,变成了1,2,3,4,6,7,8,9,10,5这样。目前就是想问,高斯这里update语句能不能像mysql一样,更新后位置不变,还是原来的默认排序?谢谢
  • [技术干货] GaussDB技术解读系列之SQL Audit,面向应用开发的SQL审核工具
    前言我们先从一个SQL语句说起(以某传统单机数据库为例)。也许这就是我们业务代码中潜藏的一个SQL语句,对于一个普通开发者来说,这个语句编写工整,逻辑清晰,没有什么问题,可以直接推到代码仓中交付上线。但是一个有经验的开发者或数据库管理员可能会发现这个SQL存在诸多的优化点:两张表的id字段是否有索引?like语句不符合最左匹配原则,能否改写?test_1表where条件中的create_time判断不符合单边原则,无法走索引,可以改写;union会对结果集去除,效率较低,能否换成union all?test_2表的id字段被函数引用,也可能用不上索引,可以优化;test_2表是否存在id和name联合索引,能否加hint,指定特定索引提高查询性能?貌似经过上述的分析后,这个SQL可以焕然一新,在该数据库上飞一样地跑起来,但这就完了吗?其实并没有,在单机数据库上也许已经优化到了极致,可当我们的数据库是一个分布式数据库呢?它可能又会带来新的性能问题,我们要考虑where条件中的id是否是分布键,concat函数是否会影响算子的下推…...这一系列的问题都会产生。这实际就是我们所面临的现状,开发者的技术能力良莠不齐,DBA对数据库知识的局限性导致烂SQL无处不在,而且随着数据库的不断变更或演进,一些好的SQL也可能逐步变成需要优化的烂SQL, 我们要时刻不断地找寻它们的踪迹。SQL Audit审核工具介绍华为内部有很多业务部门,对传统单机数据库、MySQL、PostgreSQL等各种数据库都有深度的使用,也一直备受烂SQL的困扰,随着GaussDB在内部业务系统的规模应用,现存SQL在GaussDB中能否高质量运行也面临挑战,于是我们开发了SQL Audit工具,根据公司内部各业务部门多年积累的SQL开发规范和GaussDB数据库的优秀实践,整理出SQL审核规则上百条,对命名规范、表结构/索引设计、SQL性能优化、分布键及算子下推等常见影响SQL质量的问题都可以做深入的分析和审核 ,同时我们又开发了一些插件,直接集成到开发的流水线中,自动从代码仓获取SQL语句,做到一键审核。SQL审核的核心流程可以分为以下三个阶段:SQL获取:即我们能从哪些渠道获取到需要审核的SQL, 获取能力决定了我们能否对开发中的代码做更全面的审核;SQL语法解析:是针对具体的每一条SQL做语法树的生成和分析;SQL规则审核:是拆解SQL语句的每一部分,和相关审核规则项逐一做匹配,找出待优化或风险点,最终形成审核报告。SQL获取客户通过SQL访问数据库的渠道多种多样,客户端工具、命令行、SQL脚本、应用代码…...代码开发又可以采用JDBC、ODBC、底层API调用等各种方式,SQL语句既可以直接在代码中拼接,也可以通过配置文件(如:Mybatis),还可以通过ORM框架(如:Hibernate )访问数据库,所以如果想要获取到客户的全部SQL是一件非常困难的事情。SQL Audit对当前大部分SQL使用场景进行了支持,而且还在持续扩大SQL能获取的范围,力求能够全面地将客户使用的所有SQL全部审核到,下图是当前SQL Audit工具支持的SQL获取范围。手动输入手动输入为客户提供了一个简单、易操作的平台,客户可以随时把自己编写的SQL语句输入到SQL Audit工具中进行审核,根据审核结果直接对语句做调整,同时也可以将一个.sql文件整体上传上来,进行批量的审核。源代码源代码是烂SQL最主要的来源,但因其编程语言多种多样(C/C++/JAVA/GO/PYTHON/SHELL…...),编写方式也千奇百怪,所以很难将每种场景的SQL都获取完整,我们将代码中的SQL分成了三类:1)源码拼接SQL通过拼接的方式生成SQL语句,拼接的过程可能会引入很多变量,这种情况无法获取到完整的SQL,所以通过静态文件提取SQL的方式会有很大缺陷,SQL Audit工具支持对Java代码做语法解析,提取里面的SQL,对于其他语言的代码目前暂不支持。2)无SQL的ORM框架例如Hibernate、SQLAlchemy等这些ORM框架无法从代码中获取到SQL语句,SQL Audit工具提供了基于Java二进制改写技术,在JVM运行时动态监听JDBC API,获取SQL语句。3)配置SQL的ORM很多业务系统基于Mybatis框架搭建访问数据库的能力,Mybatis通过注解或配置文件的方式编写SQL语句,SQL Audit工具能够对Mybatis的注解和配置文件进行深度解析,提取SQL成功率达99%以上。数据库对象数据库表结构、索引、约束的设计以及存储过程、函数等PL/SQL的编写对数据库的性能起决定性作用,SQL Audit工具可以连接到数据库,获取数据库中的全部对象定义, 从设计的规范性(如:命名规范、长度/大小写限制)、合理性(如:索引是否合理)和性能等方面进行考量,给出审核建议。数据库日志为了更全面地获取到发生在数据库的SQL语句,从数据库本身的日志层面着手也是一个比较可行的方案,解析数据库的redo、开启数据库审计日志、查询SQL缓存区等方式都能够有效获取到运行SQL,SQL Audit工具也支持通过数据库日志获取SQL语句的能力。流量抓取为了解决从源代码中无法获取全部SQL的问题,我们开发了基于流量抓取的SQL审核能力,它能极大提升对SQL获取的完整度。IP+端口作为数据库对外的统一入口,基本可以包含客户业务和运维所产生的全部SQL语句,通过对数据库服务器端口的旁路监听,获取到网络协议包,经过对数据库网络协议解析和重复SQL过滤,得到有效的SQL语句,最后将这些SQL传入SQL Audit工具进行审核。 SQL解析SQL解析的过程就是将SQL语句按照语法规则解析成语法树的过程,一般的解析过程分为词法解析和语法解析,然后生成语法树,大部分对SQL语句分析的工具都是直接遍历语法树实现的,SQL Audit工具没有直接解析语法树,而是增加了一个处理过程,将语法树解析成Java描述类,后面所有的审核规则都是基于这个语法描述类进行,这样大大提高对审核规则的开发效率,同时降低了开发难度。SQL审核丰富的审核规则审核的核心是审核规则,而审核规则的核心是对数据库的理解+对客户业务开发理解的实践经验总结,我们结合GaussDB数据库的最佳实践+公司内外部客户的实际使用场景,整理出审核规则数百条,目前产品中已支持规则78条,包含了SQL开发过程中常见的规范和性能问题,后续会有更多的规则持续丰富到产品中。SQL Audit同时提供了模板配置功能,客户可以根据自身业务场景灵活地选择需要审核的规则。深度审核SQL Audit审核流程如下图所示:当一个SQL输入到SQL Audit中后,首先会对SQL进行语法解析,然后根据SQL中所依赖的表、视图等对象,去数据库中获取元数据信息(列信息、索引信息等),如果这个SQL语句的性能可能受执行计划的影响,则会再从数据库中获取该语句的执行计划,综合上述全部信息,逐一匹配每一个相关的规则进行审核,最终输出全部违反规则项。实践案例华为云内部某系统有一部分的业务代码是基于JAVA的Mybatis框架开发,在将数据库替换到GaussDB的过程中有大量的SQL做了兼容性改造,为保证改造后的SQL能够高质量地在GaussDB数据库中运行,该系统通过SQL Audit工具对整个代码仓进行全面审核,同时在流水线中部署了SQL Audit审核插件,持续对增量代码进行看护。SQL Audit发现了大量的不规范和低性能的SQL,提前规避了风险SQL流入到生产环境,开发人员根据SQL Audit的审核报告对代码进行了优化,业务切换到GaussDB后持续稳定运行。以其中一个任务为例,该任务涉及SQL总数有1881个,审核出有问题的SQL有300多个。审核结果统计报告审核问题SQL详情总结GaussDB在打造内核竞争力的同时,希望给客户提供全流程、全链路,面向开发和运维的数据库自动驾驶体验。今年我们发布的SQL自动审核工具,在开发环节帮助客户写好SQL,拒绝烂SQL。未来,我们还将进一步支持对PL/SQL审核的支持,比如存储过程、函数、触发器、包等的审核,以及与AI大模型的结合,大模型在SQL语言的处理上已经做得很好,SQL Audit工具会和华为的盘古大模型进行对接,通过大模型的能力增强它的审核、优化和改写能力。作者:华为云数据库和应用迁移专家 李志学
  • [技术干货] GaussDB 什么时候应当开启SMP
    1. 首先我们来看看华为云官方对SMP的定义SMP特性通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、网络、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,能够起到较好的性能提升效果;但是如果在不合适的场景下,或者资源不足的情况下,反而可能引起性能的劣化。同时,生成SMP需要考虑更多的候选计划,会导致生成时间较长,相比串行场景也会引起性能的劣化。文档地址为:https://support.huaweicloud.com/performance-dws/dws_10_0036.html2. 再看一下SMP的使用限制系统的CPU、内存、I/O和网络带宽等资源充足。SMP架构是一种利用富余资源来换取时间的方案,计划并行之后必定会引起资源消耗的增加,当上述资源成为瓶颈的情况下,SMP无法提升性能,反而可能导致性能的劣化。同时,SMP计划的生成时间较串行要长。因此,在短查询为主的TP类业务中,或者出现资源瓶颈的情况下,建议关闭SMP,即设置query_dop=1。文档地址:https://support.huaweicloud.com/performance-dws/dws_10_0040.html总结当服务器性能足够,且查询结果会有大量数据时,推荐开启SMP由于SMP计划的生成时间较串行要长,且会占用较多的资源。因此,当服务器性能不足 或 主要是以短查询为主的TP类业务,则应当关闭SMP
  • [运维管理] vacuum full提示 WARNING: TopSQL lfq is full, failed to save queryid: xxx
    问题现象:执行vacuum full 有这个警告,WARNING: TopSQL lfq is full, failed to save queryid: xxx问题原因:内部限制了topsql使用的内存大小,并发过高的时候这部分内存满了导致部分语句不能被记录,打出来warning提示规避措施:可以调大session_history_memory进行观察, 建议最大不要超过300。
  • [技术干货] 产教融合 华为云GaussDB助力数据库产业人才培养
    近日,GaussDB数据库产教融合论坛在华为苏州研究所举行。本次论坛邀请了多位知名高校老师、北京金融科技产业联盟代表和金融行业DBA代表到场参加,共同围绕企业数据库人才需求、高校数据库人才培养模式、以及行业与高校对数据库厂商有何诉求展开深入研讨,为数据库人才的培养出谋划策,进一步推动数据库人才供应链的完善。数字经济发展如火如荼,数据库作为支撑数字化转型的关键信息基础设施,对推进数字经济发展,赋能各行各业关键应用有着重要的作用与价值。近年来,国内数据库百花齐放,数据库技术不断成熟,但要想做大做强,必须加快数据库人才培养,突破技术和人才制约,提升行业的核心竞争力。高校如何基于国内数据库开好数据库课程?高校作为人才培养的主阵地,如何基于国内数据库开好数据库课程,让数据库人才教学模式更好地匹配当前行业的发展需求?对此,高校老师纷纷建言献策。清华大学计算机系李国良教授表示,授人以鱼不如授之以渔,要让学生知道背后的核心技术和演进道理,拥抱变化,具备数据思维,打通软硬件全栈能力,加强系统人才的培养。复旦大学计算机科学技术学院汪卫教授表示,复旦大学已经在本科教学过程中融合了高斯数据库,并建议开发完善基于高斯的实验平台,建设面向高斯的数据库教学体系,进一步推动数据库人才培养。电子科技大学孙明副教授表示,校企联动,高校引入国内优秀数据库,分层次多阶段从应用、原理到实现,逐级挑战,不断优化和完善数据库教学体系和人才培养标准,加速培养企业需要的数据库人才。东北师范大学李雁翎教授表示,国内的数据库应该走入更多普通高校,企业开放更多的应用场景,创造条件让学生端的成果触达企业,同时希望有更多的数据库项目,给学生提供展示舞台,也希望联合企业搭建产教融合生态,双向奔赴,携手共进。北京航空航天大学郎波教授表示,北航计算机学院在数据库系统及原理应用一课中,除了掌握基本理论和开发技术,还加入了数据库新技术和DBMS的实现技术,并基于华为云GaussDB平台开设了实验课程,学生对此收获颇丰。另外,我们希望和内核专家建立交流的渠道,同时开放场景课题和应用需求,让学生切合国家卡脖子的问题深度实践。北京邮电大学邓芳教授表示,我们在数据库系统原理教学中,使用华为数据库进行基本实验和SQL操作,华为在过程中给予了我们很多支持,也希望华为能围绕高校课程提供相应的案例,提供小型的DBMS系统开发的平台和帮助,让学生在一定基础上做系统开发,例行化走进高校,让学生了解国内数据库的发展,也了解GaussDB。华东师范大学赵慧教授表示,华为为我们提供了很多帮助,比如快速提供资源,为学生答疑解惑等,希望华为能更大力度宣传GaussDB和高斯,对于参与竞赛的学生提供脱敏应用和数据,对于马上走进工作岗位的本科生和专业硕士,希望能有内核的剖析和实践。同时完善相关产品文档,提供更多的帮助文档解决方案。华中师范大学喻莹教授表示,从智能基座开始,我们在2021年成立了华为班,开设华为数据库课程,并于2022年获批了虚拟教研室,组建了很多活动,进一步推动了学生的学习积极性。高校人才培养有多种层级,而不是单一化,教材、资料、书籍、网络资源也应该多样化,希望华为能提供更多手把手教程、更专业的认证,以及更多的竞赛项目和平台。行业需要什么样的数据库人才? 数据库人才培养一般是自上而下,即起步于数据库原理,包括内核开发、运维调优、工具开发,再到数据库应用(应用侧人才岗位更多),是当下流行的行业人才需求模式,这些人进入产业后经过磨炼和积累,逐步进入更高精尖的领域。但随着云计算、人工智能、大数据的发展,数据库人才模式出现了些变化。来自北京金融科技产业联盟的魏中宣表示,数据库人才培养因要求高、难度大、周期长等问题,需要联合多方力量,打造产学研用协同攻关育人新模式,加强高校教师学生、从业人员交流培训,建立健全科学的数据库人才能力评价体系,促进国内数据库稳妥高质量发展。来自中电金信的千利稳表示,为了支撑金融及重点行业转型,中电金信对主流国内数据库进行了全面摸底,发现国内数据库在技术、性能、生态、人才等方面面临挑战,尤其是国内数据库开发人才短缺,人才培训和认证体系与国外相比仍存在较大差距,无法完全满足企业数字化转型需求,数据库人才供给问题迫在眉睫。此外,金融行业DBA代表们提出企业可以开放业务逻辑,走进高校和科技单位,为学生和从业者建立渠道,深入交流;同时联合产业力量,推进国内数据库标准建设,推动国内数据库论坛建立,丰富各种数据库实践、落地故障案例内容,让初学者更快掌握数据库要义。华为云GaussDB如何助力数据库人才培养?会上华为GaussDB内核架构师任阳也分享了华为GaussDB内核新员工人才培养路径与经验,人才的培养,要从树立殿堂开始,华为云GaussDB从新员工到技术骨干,再到技术专家和产业领导者,打造了完备的数据库技术人才成长路径。新员工的学习路径,应该是知识与实践并重,华为提供了内部知识共享平台、GaussDB知识社区、公开课、书籍以及博客推荐等材料,方便新员工自主学习,了解业界前沿技术,同时通过人员能力进阶评价牵引内核技术人员不断深化能力,逐步突破技术难关,成长进阶,这也给高校的人才培养提供了一些借鉴思路。数据库是生态型产业,人才生态是重中之重,国内数据库的生态之路漫漫,吾将上下而求索。华为云GaussDB将矢志不渝,坚定走产教融合战略,聚八方力量,育四海人才,攻克技术高峰,繁荣数据库产业,国内数据库,未来大有可为。
  • [技术干货] 夯实技术根基,华为云GaussDB助力证券基金业拥抱数字化浪潮
    7月26日,证券基金行业技术创新联盟2023年第二季度工作会议在合肥举办。会议以“双轮一体,自主升级一一证券基金行业数字化转型和技术创新融合发展实践”为主题,邀请了证券行业领导、产业专家学者等230余人到场参加,一起探讨数字化转型、智慧化变革时代浪潮下,金融行业产业厘革的下一征程,并吸引了线上470余人的热情关注。其中,华为云GaussDB研发总监张东出席分享了华为云GaussDB数据库的最新进展和对证券基金数据库应用的思考。关注客户诉求,在场景中锤炼成熟张东说,数据库上连应用,下接基础设施,决定着整个系统的可用性,而交易型数据库是所有系统的核心,对企业更为重要。在企业数字化转型中,数据规模持续增长、专用硬件不可获得、业务负载浪涌、IT人员投入不足、数据安全事件频出等挑战也催生了数据库技术的发展,根据Gartner预测,分布式和云将是未来数据库发展的主要方向。华为在数据库领域砥砺研磨20多年,打造的GaussDB分布式数据库不仅完成了华为内部IT系统600多套数据库的全面替换,在华为终端云也建设起了6000多个分布式数据库节点,资源利用率和运维效率提升了30%。“场景是数据库的磨刀石。”张东说,在外部,中国的银行、保险、证券、能源等行业的核心业务系统向华为云GaussDB开放了很多场景,锤炼了GaussDB的产品能力。今天,华为云GaussDB除了解决好华为自身的业务连续性问题,还将承担起更多行业的需求,不仅要做深做透金融大行,将金融核心系统数据库替换从试点实现批量复制,更要从大行逐步走向中小行、证券基金、保险等更多金融机构,满足证券核心交易业务确定性不抖动的时延等更多需求。五高两易能力全面升级华为云GaussDB基于华为软件工程全栈可信框架,实现了从结果可信到过程可信,真正的自主创新,端到端的工具链保证软件开发工具的安全可信,还构建了多层的测试防护网、20万的测试用例和10多个典型金融客户的场景化的防护网,实现了真正的高质量。张东介绍,为了满足更多场景下的需求,新一代GaussDB形成了高可用、高性能、高弹性、高安全、高智能、易部署、易迁移五高两易的全面能力,对关键能力进行了升级。可用性上,与工行联创推出国内首个基于存算分离的双集群强一致方案,保障任何软硬件故障完全隔离,真正实现了7*24小时服务不间断;针对一些对可靠性要求不高的系统,GaussDB也提供极具性价比的本地盘方案,比如单节点容灾集群。性能上,针对证券行业的低时延业务,联合招行重构了底层存储引擎,保障数据库高性能和极低抖动。经过实测,在大压力的情况下,GaussDB的性能抖动可以控制在3%以内,而存储空间的利用率提升了17%。智能化上,GaussDB希望给客户提供全流程、全链路,面向开发和运维的数据库自动驾驶体验。比如面向开发环节,针对客户经常遇到的一条或一类烂SQL把整个数据库拖慢的问题,GaussDB推出了SQL Audit审核工具,可以针对单条SQL、SQL文件、Mybatis等进行SQL解析和审核,帮助客户写好SQL,拒绝烂SQL。面向运维环节,GaussDB 支持慢SQL一键查杀、一键限流、慢SQL根因分析及改写建议、索引推荐、趋势预测,让DBA从繁琐的后台命令行解脱,极大提升运维效率。部署和迁移上,基于语义感知的数据压缩实现了65%的压缩效率,轻量化、零侵入的压缩方案保证合理压缩率的同时对业务的性能影响降到了5%以内;内核多租户能力让应用使用更灵活、资源利用率更高;一站式迁移解决方案通过UGO提前评估、结构迁移、DRS在线迁移和数据对比、流量回放、灰度并行等,让整个迁移工作变成一个确定性的事。在市场中得到广泛认可“IDC报告显示,华为云GaussDB已经连续六次蝉联本地部署模式市场国产数据库份额第一。”张东说,GaussDB在金融政企市场得到了广泛认可。在证券基金保险行业,GaussDB联手新意科技打造的法人清算系统已经在兴业证券等多家企业上线。兴业证券经过基于GaussDB的法人清算系统运行一周时间与同期现网系统基于相同生产数据的清算时长比对,以沪A深A市场为例,性能获得约10%的提升,同时支持并轨运行,极大提升了系统的可靠性。最后,张东表示,华为云GaussDB期待与更多伙伴一起共建健康繁荣的产业生态。一方面,优化产业环境,让更多客户得到健康的发展和资源,打造更好的产品、工具、服务;另一方面,要联合产、学、研、用深度协同,在核心技术上不断创新突破;最后,还要健全人才体系,培养高质量人才,满足行业需求,这样才能形成产业的合力,推动整个产业发展。华为云GaussDB也将继续在更多场景里持续进行工程化的打磨,为行业注入更领先的技术、更多的创新,做金融数字化转型的坚实数据底座。
  • [技术干货] 金融行业DBA“走进华为”GaussDB赋能培训走进苏州
    近日,DBA走进华为培训活动第二期——金融行业DBA“走进华为”GaussDB赋能培训在华为苏州研究所举行。本次培训为期三天,14家金融机构、11家金融行业核心ISV的49名DBA到场参加,并邀请产业代表与八位高校老师围绕企业人才需求和GaussDB在高校的教学实践和思路展开了深入研讨,共同为数据库人才的培养出谋划策,推进国内数据库产业繁荣发展。线下培训——产学融合助力行业DBA对数据库应用的掌握华为云GaussDB研发总监在开班典礼上致辞表示,近些年,国家金融科技创新政策的不断落实,为国内数据库的发展提供了广阔的空间,同时也带来了一些挑战。而要做一款完全自主创新的数据库,需要大量的专家参与和长时间的战略投入。华为云GaussDB有二十多年的数据库研发经验,在苏州集结了超过三百位的研发专家,有长期奋战的决心和信心。今年,华为云GaussDB数据库进一步实现了产品能力的全新升级,推出了Ustore存储引擎、双集群强一致、全密态等新一代技术,具备高性能、高可用、高安全、高弹性、高智能,以及易部署和易迁移五高两易的全面技术能力,满足金融客户对数据库性能、安全、可靠性等方面的高要求。希望大家能通过本次培训有所收获,对GaussDB有更多的了解,共同助力金融行业数字化转型。本次培训的讲师团由八位华为云数据库专家组成。专家们通过现场教学,围绕华为云GaussDB数据库的体系结构、高可用关键技术、安装部署、开发和运维的关键能力和工具进行了详细的解读,分析了GaussDB与传统商业数据库的语法差异性,并结合DBA的日常实际应用场景,通过融入实践案例,来提高培训的实效,深化学员们对产品应用的感知和认识,帮助DBA学好GaussDB、用好GaussDB。课后,专家和学员们展开了积极的互动和交流,耐心为学员们答疑解惑,并组织了结课考试,以考促学巩固学员们的学习效果,检验学习成果。学员们纷纷表示,参加本次培训得到了很多收获,希望以后能有更多这样的培训机会,与行业同仁加深交流,共同助力国内数据库产业的发展。在最后的结班仪式上,华为云数据库服务产品部总经理苏光牛为优秀学员们颁发了证书,并和大家合影留念。苏光牛表示:“做好数据库很难,做好功能稳定的数据库更是极具挑战。华为在做数据库的过程中,一直非常重视客户的反馈,这是GaussDB不断发展和前进的动力。结课后,也希望学员们能继续多多交流,给予我们更多反馈,大家合力,一起推动国内数据库产业繁荣发展。”论坛研讨——产教融合,合力推进数据库人才培养培训之余,为了使高校的人才教学模式能够更好地匹配当前金融行业对数据库人才的需求,华为云GaussDB数据库产教融合论坛邀请了清华大学李国良教授、教育部“数据科学课程群”虚拟教研室负责人东北师范大学李雁翎教授、复旦大学计算机科学技术学院汪卫教授、北京航空航天大学郎波教授、北京邮电大学邓芳教授、电子科技大学孙明副教授、华东师范大学赵慧教授、华中师范大学喻莹教授,北京金融科技产业联盟代表、多家银行客户和ISV伙伴代表,与华为云数据库服务产品部总经理苏光牛,以及多位华为云GaussDB研发专家齐聚一堂,围绕当前金融企业对数据库人才的需求、GaussDB数据库在各高校的教学情况,以及高校的人才培养现状和未来的教学方向进行了深入的开放式研讨,致力于实现人才需求侧与供给侧的互动循环。企业和高校代表们纷纷发表了自己的看法,为了培养出更加全面的数据库人才,企业将为高校开放更多业务场景,通过实质性的科普类教学助力高校人才培养;高校将与企业及华为云GaussDB进行更深度的融合,引入更多实践和案例,帮助学生学以致用,提前适应企业要求;华为云GaussDB也将继续走进高校,开放更多数据库难题和典型应用案例,通过产学研用的全面联动不断完善数据库人才培养体系。数字经济时代下,企业未来的竞争本质上将是人才的竞争。华为云GaussDB希望和客户、伙伴、高校一起通力协作,通过产学研用联动来攻克数据库技术难关,通过产教融合来完善人才供应链,持续为数据库产业的发展注入动能!
  • [运维管理] 任务调度里的job_status为f怎么解决?
    任务调度里的job_status为f怎么解决?权限问题?:我用的不是默认管理员账号,有些添加可以,有些不可以!!我调度存储过程类没有声明参数的没问题,声明参数就有问题
  • [问题求助] [视图定义中尽量避免排序操作] 不理解
    1.1.1 【建议】视图定义中尽量避免排序操作ORDER BY子句在顶层视图上无效,如果必须对输出数据排序,请考虑在调用视图中使用ORDER BY。请问这个怎么理解,或者怎么实现?
  • [技术干货] 掌数科技携手华为云GaussDB,助力金融科技创新,联合打造行业标杆
    7月8日,在华为开发者大会2023(Cloud)的“GaussDB数据库,打造轻量化迁移部署方案”专题论坛上,掌数科技解决方案总经理高星作为华为云GaussDB的优秀合作伙伴,分享了掌数科技和华为云GaussDB长期合作的实践和成果。同心合力,一起打造完善的GaussDB生态体系掌数科技是一家聚焦于证券和大资管行业,面向数据库和大数据技术、智能化场景应用以及行业信息技术应用创新领域的金融科技企业,服务于全国80余家大型金融机构客户。作为华为在金融行业数据库技术领域的全面合作伙伴,掌数科技长期与华为云GaussDB合作,提供基于华为云GaussDB数据库的配套生态软件产品及服务支撑体系,在金融大数据服务和应用迁移上云等领域积极投入,帮助行业用户快速转型。高星表示,掌数科技作为为金融细分领域客户提供技术服务和支持的一家厂商,选择和华为云GaussDB战略合作,是因为华为有非常好的研发实力做基础,能够支撑客户应用场景稳定高效运转,也为我们服务能力的构建和服务体系的建设提供了很多支持,并且有长期的研发投入与坚定的发展规划。这些都是我们非常看重的重要因素。面向金融核心场景,基于GaussDB打造迁移灾备整体解决方案过去的两年多,掌数科技和华为云GaussDB面向金融核心业务系统联合打造了GaussDB完整配套软件,形成全面的产品体系,包括容灾备份一体化解决方案(Z-XCP)、数据迁移及持续复制软件( Z-RPS )、GaussDB增值插件包 (Z-DB+);同时也面向客户与合作伙伴打造了GaussDB技术支撑与服务军团,包含售前面向行业客户的金融创新解决方案,售中阶段创新项目的实施落地,共同打造行业标杆,以及售后的专家支持与专业服务。容灾备份一体化解决方案(Z-XCP)以保护企业业务连续性为目标,可以一站式完成企业的“两地三中心”容灾体系建设和重要职能管理体系的部署,帮助客户轻松应对GaussDB集群的容灾、备份、监控以及开发/测试库搭建等管理难题,通过更低成本、更高效的方式,满足不同行业和业务场景下的数据安全性要求。借助该产品,掌数科技不仅可以纳管原厂标准的GaussDB部署方案,自己也研发了一些符合行业应用需求的更灵活、更弹性的部署方案,让客户有更多选择。GaussDB增值插件包(Z-DB+)提供了更多个性化工具,重在解决数据库之间互联互通的难题。慢SQL语句跟踪工具提供业务系统使用过程中慢SQL及执行计划的监控功能,用于分析优化系统性能,解决业务改造过程中业务性能下降等用户关切的问题;DBcopy工具支持GaussDB与原来异构数据库之间超高速率的双向复制,帮助企业快速完成迁移和同步;DBlink工具可以在迁移改造阶段支持GaussDB数据库与其他数据库等异构数据库之间的双向实时访问;高压缩传输工具,具备广域网下GaussDB高压缩传输能力,满足了证券行业客户同城或异地机房在窄带宽(如百兆网络)广域网下的容灾需求。数据迁移及持续复制软件( Z-RPS )支持系统的实时迁移、数据库双活容灾、逃生通道保障(反向迁移),满足了核心系统数据实时迁移、实时汇总与实时分发等需求。在金融核心场景不断落地,满足客户更多需求在这些生态工具的加持下,该产品体系已经全面支撑证券、基金、银行、保险、信托等金融行业科技创新,满足了越来越多客户的需求。法人清算系统是我国证券公司的核心业务系统之一,在证券交易后的结算环节起到至关重要的作用。某中大型证券公司法人清算系统迁移面临着几大考验:数据量大:迁移数据以T为单位,不仅数据时间跨度长,数据质量还要求必须精确;迁移频度高:在数据测试和生产、双轨和单轨运行等阶段,都需要重新进行迁移比对,反复的迁移导致不仅迁移频度高,实施周期也较长;异构数据库迁移技术难度大:不同数据库的存储方式不同,字段的类型、精度和长度不同,表结构也不同,还有空白字符、乱码需特殊处理,都加大了异构迁移的难度。掌数迁移方案对该系统的8000多张表进行了定制适配,内置了法人清算历史库和当前库的数据同步和比对、异构数据特殊转换模型和法人清算特殊处理,并且支持全量、增量、批量、指定表等多种模式的迁移,以及异常数据的校验分析和按计划定时迁移,最终快速完成了原数据库与GaussDB数据库之间的双向迁移,迁移全程透明、可视化管理,并通过工具自动化辅助人工,完成了异构数据的比对校验,实现了两套系统多维度的数据准确性校验,双轨期间一直稳定运行。某超大型保险公司养老核心系统的迁移也面临着重要挑战,需要在短时间内完成17TB数据的全量迁移,还存在乱码数据及字符集问题,并且大量的表使用了clob、blob字段,对增量迁移及后续的数据校验带来极大挑战,特大表还存在不分区、无主键、无索引的问题,这些都提高了迁移的难度。掌数迁移方案用4天时间就完成了17TB的全量数据迁移,迁移速度保持线性趋势,迁移后系统功能稳定无异常,有效兼容了各类数据异常问题,并通过数据校验功确保了所有数据准确一致。整个迁移高效、准确、稳定,比普通同步工具的迁移效率提升了100多倍。某大型基金公司选择了GaussDB的同城1AZ、异地1AZ的容灾建设方案,又通过掌数容灾备份一体化解决方案实现了多种灵活容灾部署架构、高压缩低带宽异地容灾、故障切换/灾难恢复、演练切换/计划停机的容灾管理,全量与增量备份恢复,基于策略的自动化备份恢复,库、模式、表的逻辑备份恢复,开发测试库恢复和基于时间点恢复(PITR)的备份恢复机制,以及集群核心指标、数据库核心指标、数据库节点的监控管理,做到数据容灾备份一体化管理,满足了业务需求。“在持续的演进和发展过程中,华为云GaussDB的生态越来越成熟。掌数科技把自己定位为华为云GaussDB生态中的一员,并致力于成为华为云GaussDB生态中最优秀的服务商之一,未来将继续展开深入合作,不断完善华为云GaussDB技术支撑与服务体系,站在金融角度打造行业实施的标杆案例,让行业客户更信任华为云GaussDB,用好华为云GaussDB。”高星说。
  • [技术干货] GaussDB技术解读系列之高级压缩
    【背景介绍】数据压缩与关系数据库的结合,早已不是一个新鲜的话题,当前我们已经看到了各种各样数据库压缩的产品和解决方案。对于GaussDB来说,在今天引入数据压缩,究竟能够给客户带来什么不一样的价值,是过去一段时间我们一直在思考的问题。为了回答这个问题,我们首先对各种通用压缩算法进行了广泛的测试,从性能最好的LZ4/Snappy,到性能与压缩率均衡的Zstd/Zlib,再到强调压缩率的LZMA/BZip。我们发现:即使是性能最好的压缩算法,仍然无法做到对一个在线数据库的性能不产生显著影响。我们也调研了数据库领域的各种编码方法,包括近几年学术界发布的一些基于预测和线性拟合的编码方法,从研究发布的测试结果及实测来看,数据库编码用于解决特定数值分布的可压缩性问题,与压缩算法的成熟度相比,当前并没有一种通用的数据库编码方法,能够在大多数真实数据集中的场景下提供稳定的压缩率。这是我们对于数据库压缩这个领域的一个基本技术判断。过去的产品实践也验证了这一点,我们看到很多商业数据库和开源数据库都提供了对于压缩的支持,绝大多数时候,留给客户的选择就是决定要不要在特定的表上开启压缩。开启压缩意味着空间节省,但同时意味着性能下降,这个看似简单的选择恰恰是客户最难做的。这也是为什么有了这么多数据库压缩的产品,我们却很少能看到数据压缩真正广泛应用在数据库在线业务中的根本原因。这给了我们更多的启示。我们相信,真正可被应用的数据库压缩技术,能够去兼顾压缩率与业务影响的平衡,应该是选择性的。即我们能够基于技术去判定数据的温度,并基于这样的判定,去选择性地压缩业务中相对较冷的数据,而不去碰那些相对较热的数据。这样的技术选择意味着我们无法去满足所有业务场景,我们要求业务的数据温度分布,必须满足80-20分布规则。即我们去压缩那些占用80%存储需求、但只占用20%计算需求的冷数据,而不去碰那些只占用20%存储需求、但却占用80%计算需求的热数据。幸运的是,我们发现绝大多数对于容量控制有需求的业务,都具备这样的特征。【场景及目标选择】通过对大量业务场景的分析,我们发现业务对于数据库压缩技术的需求是多元化的,有在线交易业务(OLTP)存储压缩的场景,有分析业务(OLAP)存储压缩的场景,有历史业务存储压缩的场景,也有容灾业务传输压缩的场景。不同的场景,对于压缩技术的诉求,如果从压缩性能、压缩率、解压性能的三维指标去看,从对业务侵入的容忍度去看,是完全不同的。这意味着如果我们想要打造一个全场景的GaussDB高级压缩特性,它应该是多个技术的组合,包括不同的压缩算法、不同的冷热判定模型及方法、不同的数据存储组织等,通过不同的技术组合及应用去满足不同的场景需求。这同时意味着我们在不同压缩适用场景的支持上需要有个优先级的取舍。我们的答案是选择去优先支持OLTP存储压缩场景,这是我们认为数据库压缩技术最有价值的业务领域,当然也是技术挑战最大的领域。确定场景之后,接下来是确定技术目标,我们面向这个场景,究竟要打造什么样的核心竞争力,这取决于我们对于典型客户场景的分析。我们识别了两类典型客户场景:场景A:客户业务来自于IBM小机,单库容量50TB,迁移到开放平台后,面临容量过大和运维窗口过长问题。选择拆库意味着分布式改造,对于一个已经稳定运行许多年的存量关键业务来说,这种技术选择风险过高。选择压缩可以显著降低容量风险,但业务最初的设计并没有考虑冷热分离(比如基于时间维度建立分区),需要一种零侵入的压缩技术支持,同时对业务性能影响足够低。场景B:客户业务基于分布式集群部署,单集群容量已经超过1PB,并且仍在快速增长,需要定期扩容。选择压缩可以降低扩容频率,显著降低业务的软硬件成本,并减少变更风险。但业务的数据分布设计是面向扩展性的(比如基于用户维度建立分区),没有考虑冷热分离,因此同样的,业务需要一种零侵入的压缩技术支持,同时对性能影响足够低。通过对客户典型场景的需求梳理,我们确定了GaussDB OLTP存储压缩的基本设计目标:1)冷热判定对业务应该是零侵入的,不应对业务的已有数据分布、逻辑模型有任何依赖;2)对业务影响必须足够低,我们定义目标低于10%,并挑战5%;3)提供合理的压缩率,我们定义目标不低于2:1。基本设计目标的定义,使得我们能够将后续每个具体场景中的技术选择都变成一个确定性问题。【冷热判定】确定设计目标后,我们开始进行工程落地。有三个问题需要解决:1)如何实现对数据的冷热判定;2)如何实现压缩后数据的存储组织;3)如何实现有竞争力的压缩算法。对于冷热判定,首先要确定判定的粒度。数据的冷热判定可以基于不同粒度实现,行级、块级或表/分区级,粒度越粗,实现的复杂度越低,但对业务的侵入也越大。基于设计目标,很自然的,我们选择行级的冷热判定,这是对业务数据分布依赖最小的方案,我们需要解决的,是如何控制引入冷热判定的代价。我们利用GaussDB存储引擎已有的机制巧妙地解决了这一问题。具体来说,GaussDB存储引擎在每行数据的元数据Meta中记录了最近一次修改该行的事务ID(XID),该信息被用来支持事务的可见性判定,从而实现多版本并发控制(MVCC)。对于特定行来说,如果其XID足够“老”,老到它对所有当前已经活跃的事务都可见,那么这时候我们实际上已经不关注XID的具体值,我们可以通过引入一个特定的标志位(FLG)来记录这一点,而原来XID中填充的值可以被一个物理时间来代替,这个物理时间就表征了其所属行最后一次修改时间的上限(LMT,Last Modified Time)。很显然,LMT可以用来支持冷热判定(具体见图1):图1:行级冷热判定上述方案的好处是引入LMT并没有增加额外开销,对业务的逻辑模型也没有任何依赖,在大多数时候,如果不是特别严格要求,业务可以定义一个简单的规则来实现冷热判定,比如:AFTER 3 MONTHS OF NO MODIFICATION此时系统会扫描目标表,对于所有满足当前时间减去LMT超过3个月的行进行压缩。注意在上述方案中,我们实际上只识别了行的写热点,但并没有识别行的读热点,我们只知道满足条件的行3个月内未发生任何更新,但我们无法确认这些行在3个月内是否被频繁读取。维护行的读热点,目前从技术上没有低成本的解决方案。对于像订单明细这样的流水类业务,这个方案可以很好地工作,因为数据的读和写呈现出相同的温度特征,其访问频率随着未修改时间的增加不断衰减。但对于像手机相册这样的收藏类业务,仅识别写可能是不够的,因为一个很早建立的收藏关系仍然可能被频繁访问。这意味着,即使系统进行了冷热判定,我们仍然需要去优化业务可能访问压缩数据的场景,我们把这个问题留给了存储组织和压缩算法,对于压缩算法来说,我们更关注其解压性能。另一个问题是在某些场景下,使用默认的冷热判定可能是不够的,比如对于某些类型的交易而言,其产生的订单明细可能在3个月内确实不会被修改,但会在达到一个特定的触发条件后被更新(比如解冻担保交易)。这种场景在实际业务中并不常见,但如果业务确实关注性能,那么我们支持在默认的冷热判定规则以外,允许业务自定义规则,比如:AFTER 3 MONTHS OF NO MODIFICATION ON (order_status = "finished")此时系统会仅压缩3个月未修改、且订单状态已经完结的数据。当前我们支持的自定义规则,是任意合法的行表达式,业务可以写任意复杂的表达式来表征数据的冷热判定规则,但表达式中所引用的任何字段,只能是目标表上的合法字段。通过这种默认和自定义规则的组合使用,我们提供了业务足够低的使用门槛和更好的灵活性。【存储组织】当满足冷热判定条件的行被压缩时,我们需要决定如何存储这些压缩后的数据,基于设计目标,我们选择了对业务侵入最小的存储组织实现——块内压缩。我们知道关系数据库的存储组织都是基于固定长度的分块的,在GaussDB数据库中,典型的数据块大小为8KB,选择更大的数据块显然有利于压缩,但对业务性能会造成更大的影响。所谓块内压缩,是指:1)单个块内所有满足冷热判定条件的行,会作为一个整体进行压缩;2)压缩后形成的数据就存放在当前的数据块中,存放区域称为BCA(Block Compressed Area),它通常位于块的尾部。块内压缩的设计意味着解压任何数据只依赖于当前块,而不需要访问其它的数据块,从压缩率的视角看,这样的设计并不是最友好的,但它非常有利于控制业务影响。注意在我们前面的讨论中,即使业务定义了冷热判定条件,仍然存在一定的概率会访问压缩数据,我们希望这个访问代价能够有一个确定性的上限。图2给出了块内压缩的详细流程:首先,当压缩被触发时,系统扫描数据块中的所有行,根据指定的冷热判定条件,识别出R1和R3是冷数据(图2(a));接着,系统将R1和R3作为一个整体进行压缩,将压缩后的数据就存放在该数据块的BCA中(图2(b));如果业务后续需要更新R1,那么系统会为更新后的数据生成一个新的拷贝R4,并标识BCA中的R1已经被删除(如图2(c));最后,当系统在该数据块上需要更多空间时,可以回收BCA中属于R1的空间(图2(d))。图2:块内压缩在整个设计中有两点需要注意:1)我们实际上只压缩了用户数据Data,并没有压缩相应的元数据Meta,后者通常用来支持事务的可见性;2)我们支持将冷数据重新变为热数据,以消除因为冷热误判而带来的影响。同样地,从压缩率的视角,这样的设计并不是最友好的,但它极大地减少了对业务的侵入。简单来说,业务对于压缩数据的访问,与正常数据完全相同,在功能上没有任何限制,在事务语义上也没有任何差别。这是非常重要的原则:我们的OLTP存储压缩对于业务是完全透明的,这是当前这个特性,以及后续GaussDB高级压缩系列所有特性都将遵循的基本原则。【压缩算法】基于设计目标,如果从压缩率、压缩性能、解压性能的三维指标来看,我们实际上需要的是一个能够提供合理的压缩率、合理的压缩性能、但是极致的解压性能的压缩算法,这是我们压缩算法设计的基础。我们首先测试了直接使用LZ4进行压缩,LZ4是目前已知的压缩性能和解压性能最好的开源三方库,从实测结果看,LZ4的压缩率是偏低的。我们仔细分析了其算法原理,LZ4是基于LZ77算法的一种实现,LZ77算法的思想非常简单,就是把要压缩的数据看成一个字节流,算法从字节流的当前位置开始,前向寻找和当前位置相同的匹配字符串,然后用匹配到的字符串的长度以及与当前位置的偏移,用来表示被匹配的字符串,从而达到压缩的效果。从算法原理上看,LZ77算法对于长文本会有比较好的压缩效果,但是对于结构化数据中大量的短文本以及数值类型,效果就有限,我们实际的测试也验证了这一点。接下来,我们将压缩算法分为了两层:第一层,我们按列对一些数值类型进行了编码,我们选择了简单的差值编码,这种编码足够轻量级,解压特定字段不需要依赖其它字段的值;第二层,我们将编码后的数据再调用LZ4进行压缩。注意在第一层中,我们实际上是按列编码、按行存储,这和业界的一般实现(按列编码并存储)有很大不同,按列存储对压缩率会更加友好,但是按列存储意味着同一行的数据会被分散到BCA的不同区域,这种传统的设计无法支持我们后续希望实现的部分解压,我们将在结束语中更详细地说明这一问题。通过实测,我们发现这种列编码+通用压缩的实现方式有效地提升了压缩率,同时控制了业务影响的明显增加,但两层实现之间是松耦合的,这引入了许多额外的开销。因此我们在仔细权衡之后,决定放弃LZ4,而是完全基于LZ77算法,重新实现一个紧耦合的压缩算法。这在当时看来是一个非常冒险的尝试,事实上,在我们之前,还没有任何数据库内核团队,会选择自己去实现一个通用压缩算法。但从最后取得的收益来看,我们实际上是打开了一扇全新的大门。当列编码与LZ77算法之间的边界被打破时,我们引入了一系列的优化创新,考虑篇幅原因,我们无法展现全部技术细节,在这里,我们只介绍两个小的优化:第一个优化是内置行边界。我们发现,当系统采用两层压缩算法后,我们需要额外地保存每一行数据在编码后的长度,因为我们需要在LZ77算法解压后找到每一行的边界,这是一个不小的开销。为了消除这个开销,我们选择在LZ77的编码格式中嵌入一个行边界的标记,这个标记只占用了1个位,其开销较现有方案大幅降低。当然,这个标记位被占用后,LZ77前向搜索的最大窗口长度减少了一半,但在我们这个场景中,这并不是什么问题,因为我们的典型页面长度只有8KB。第二个优化是2字节短编码。原有LZ4的实现中,为了提高压缩性能,系统使用3字节编码来描述一个匹配,这意味着系统能够识别的最短匹配为4字节。但是在结构化数据中,3字节的匹配是非常普遍的,参考下面一个例子:A = 1 … B = 2其中,A和B是同一行数据中的两个整数型字段,它们的值分别为1和2,基于当前的字节序,该行数据实际在内存中存放的形式如下所示:01 00 00 00 … 02 00 00 00注意上面标红的部分,很明显,这里面有一个3字节的匹配,但是它无法被LZ4识别。我们通过在LZ77算法中额外引入2字节短编码来解决这一问题,2字节短编码可以识别最小3字节的匹配,从而相对LZ4能够提升压缩率。当然,引入短编码会有额外的开销:1)压缩性能会有一定程度的下降,因为我们需要建立两个独立的HASH表,幸运的是,在我们这个场景中,极致压缩性能并不是我们追求的目标;2)2字节编码减少了表达匹配串与被匹配串之间距离的位宽,这意味着3字节的匹配必须离得更近才能被识别,在我们这个场景中,这并不是什么问题,因为相对于这个限制,一个典型数据行的长度已经是足够小的。【效果评估】我们使用标准的TPCC测试来评估启用OLTP存储压缩特性对业务的影响。TPCC模型共包含9张表,其中空间会动态增长的流水表共有3张,在这3张表中,订单明细表(Orderline表)的空间增长比其它表多一个数量级,因此我们选择在这张表上开启压缩。基于TPCC的业务语义,每笔订单一旦完成配送,其订单状态就进入完结状态,完结的订单不会再被修改,但仍有一定的概率被查询。基于这个语义,我们选择冷热判定原则为只压缩已经完结的订单。我们分别测试了在不开启压缩和开启压缩状态下系统的性能值,结果如图3所示:图3:业务影响评估测试结果表明:在TPCC测试场景下,开启压缩与不开启压缩相比,系统性能大概降低了1.5%。这是一个非常不错的结果,这意味着即使在超过百万tpmC的业务峰值场景中,系统也可以开启压缩。我们不知道在此之前,业内是否有其它数据库产品也能够达到这一水平。我们测试了Orderline表的压缩率,作为更丰富的数据集,我们同时选择了TPCH模型中的4张表(Lineitem、Orders、Customer、Part表)进行测试。为了便于比较,对于每个数据集,我们同时测试了LZ4、ZLIB和我们的压缩算法的压缩率表现,其中ZLIB是强调压缩解压性能和压缩率均衡的算法,其压缩解压性能较LZ4低了5-10倍。最终结果如图4所示:图4:压缩率评估测试结果与我们预期的相符,在数值型字段较多时,我们的压缩算法的压缩率要高于所有通用压缩算法,但在文本型字段较多时,我们的压缩算法的压缩率会介于LZ类和LZ + Huffman组合类的压缩算法之间。【运维TIPS】注意我们的压缩方案实际上是离线的,也就是数据刚生成时必然是热数据,它们不会触发压缩,业务访问这些数据的性能也不会受任何影响;随着时间的推移,这些数据的温度会逐渐降低,最终被独立的压缩任务识别为冷数据并进行压缩。选择在业务低峰期运行这些压缩任务、并控制其资源消耗是运维端需要关注的问题。在这块我们提供了丰富的运维手段,包括指定运维窗口、压缩任务的并行度、每个压缩任务的压缩数据量等。对于绝大多数业务来说,单位时间内新增的数据量实际是比较有限的,因此业务也可以选择一个特定的时间段集中完成压缩任务,比如每个月第一天的凌晨两点到四点,完成3个月前新增冷数据的压缩。业务在决定开启压缩之前,可能希望先了解开启压缩后的收益,并根据收益大小做出决策。为此我们提供了一个压缩率评估工具,能够对目标表的数据进行采样,并使用和实际压缩过程完全相同的算法对采样数据进行压缩,计算压缩率,但不会实际生成BCA,不会修改任何数据。如果业务将压缩数据迁移到另一个表,可能会导致所有数据从压缩状态变为非压缩状态,从而导致空间膨胀,这并非我们的方案引入的,而是所有压缩方案都需要解决的问题。如果冷热判定规则非常确定,那么业务可以手动执行压缩任务使压缩立即生效;对于耗时较长的大容量压缩表的迁移,业务仍然可以选择定期地开启自动压缩任务来完成。最后,对于压缩的开启和关闭,我们提供最细粒度的控制,无论是普通表、普通分区表中的单个分区,还是二级分区中的任意单个分区、子分区,业务都可以单独开启或关闭压缩。这使得对于业务本身已经对数据区分了冷热(比如基于时间分区)的场景,仍然可以和我们的压缩特性很好地配合。【结束语】在OLTP表压缩这个特性中,我们引入了一系列的技术创新,包括全新的压缩算法、细粒度的自动冷热判定和块内压缩支持等,可以在提供合理压缩率的同时,大幅度降低对业务的影响,我们希望这个特性能够在支持关键在线业务的容量控制中发挥重要价值。接下来我们还将在降低引入压缩对业务的影响、部分解压特性、OLTP索引压缩等方面持续创新迭代,我们希望能够有开创性的技术突破来解决相关的问题,为业务创造更大价值。本文作者 华为云数据库GaussDB首席架构师 冯柯
  • [问题求助] 查询表时候报:查看表数据时出错。
    查询表时候报:查看表数据时出错。 单击“详细信息”了解详情。   [SQLErrorCode : 6636]ERROR: pooler: failed to create 2 connections, Error Message: remote node dn_6003_6004, detail: GSSAPI continuation error, more than 10 times, remote datanode dn_6003_6004, errno: Success各位大佬,求助!!!感谢!!!!
  • [其他] GaussDB(DWS)高可用之CM告警与问题定位
    前言本文主要内容分三块内容,1. CM的主要运行流程 2. CM告警机制 3. 故障排查与解决GaussDB for DWS 的内核侧组件为DN, CN, GTM,内核侧组件是通过集群管理组件CM server、CM agent 来进行管理的。内核组件和集群管理组件共同组成了GaussDB for DWS 集群。一、CM的主要运行流程参考链接:GaussDB (DWS) 集群管理系列:CM组件介绍(架构和部署形态)GaussDB (DWS) 集群管理系列:CM组件介绍(核心功能)1.1 cm_server功能cm_server是集群 管理的大 脑,整个管理系统的仲裁者,系统中只有一个,主备架构,系统中常驻的服务进程,多线程架构。主要收集cm_agent返回的各个实例(GTM主备、CN、DN主备从)状态信息,从而通过分析给出谁是主谁是备,什么时候需要failover切换,什么时候需要重建DN。cm_server的另一个作用就是接收客户端cm_ctl发送的命令,使得cm_ctl可以管理整个集群。1.2 cm_agent功能cm_agent负责收集本地物理机中内核端各个组件的状态信息,并上报给CMserver,由于CMagent只管理本地物理机,如果单节点故障(如断电,机器故障)后,该物理机上实例均故障,无法管理,因此也不需要备机。且CMagent本地并不存储任何信息,是一个无状态的组件,进程故障后,可以立刻拉起。1.3 om_monitor功能om_monitor进程负责拉起cm_agent 以及杀掉非自己启动的cm_agent。om_monitor为了保活,每分钟都会被系统定时任务crontab拉起,后拉起的进程在发现已经有om_monitor进程时,会自己退出。下图为CM模块的主要运行流程:二、CM告警机制cm_agent会实时检测cn、dn、gtm、cm_server状态,固定间隔1秒上报实例状态给cm_server。心跳是在cm_server上累计的。没有上报消息,心跳就会+1,超时就会仲裁。只有cm_agent成功连接并上报节点信息,才会刷新心跳状态。当启动集群、节点、实例时,会删除启停文件,当停止集群、节点、实例时,会生成启停文件。集群启停文件 cluster_manual_start实例启停文件 instance_manual_start_X(X是实例编号,例如instance_manual_start_6001)启停文件存在与否标志着实例或集群的启停状态。2.1 根据启停文件判断正常情况下,根据启停标志文件是否存在做进一步判断,如果启停文件不存在且磁盘、网卡正常 ->cm_agent检查实例进程是否存在 如果存在则正常,如果不存在则拉起实例如果启停文件存在且磁盘、网卡正常 ->cm_agent检查实例进程是否存在 如果存在则杀死所有实例,如果不存在则则正常2.2 根据心跳判断当cm_agent检测到dn\gtm实例状态异常并上报给cm_server之后,会做一些检查以及启动实例,会根据实例心跳超时时间(instance_heartbeat_timeout)进行判定,当超过实例心跳时间之后实例无法恢复,cm_server会给cm_agent下发仲裁命令,将相应实例的状态置为 Unknown。当cm_agent检测到cn实例状态异常之后,会做一些检查以及启动实例,会根据cm_server在CN故障后仲裁自动剔除的触发时间(coordinator_heartbeat_timeout),当超过该时间实例无法恢复,自动剔除cn。当cm_server未收到cm_agent的上报,会根据实例心跳超时时间(instance_heartbeat_timeout)进行判定,当超过实例心跳时间之后依旧无法恢复cm_server与cm_agent的连接,cm_server会给当前安全环其他cm_agent下发主备切换,将相应实例的状态置为 Unknown。单节点故障RTO机制分析:cid:link_152.3 cm_server进程故障cm_agent会检测cm_server进程是否正常(进程存在或者正常停止),如果不正常则会停止或者拉起cm_server只有检测到启停文件存在时才会杀死cm_server进程,而磁盘、网卡有故障时并不会杀死cm_server进程如果cm_server因故障无法被拉起cm_agent会一直执行拉起cm_server的命令并输出日志cm_server主备是自仲裁。cm_server主备会相互连接进行通讯,当对端连接异常且超过超时时间后会触发自仲裁选主三、故障判断及解决方案3.1 故障类型3.2 实例重启[1]故障类型:长连接断开无法接入导致的超时查杀关键日志: ${GAUSSLOG}/cm/cm_server/cm_server_创建时间.log关键词:heartbeat timeout这种情况属于长连接断开直到超出心跳时间,cms将发送failover命令到备节点,导致主备切换。[2]故障类型:cma和cms断连导致的超时查杀关键日志: ${GAUSSLOG}/cm/cm_server/cm_agent_创建时间.log关键词:agent disconnect cm_server xx sec timeoutcms和cma之间的连接断开超时,导致cms无法接收到cma上报的消息,因此下发kill。解决方案:需要排查网络以及负载情况,可能为网络连接超时或者业务量过大导致的负载过大,系统函数运行缓慢。[3]故障类型:Hang检测查杀关键日志:${GAUSSLOG}/cm/cm_agent/cm_agent_创建时间.log关键词:phony dead关键日志: ${GAUSSLOG}/cm/cm_server/cm_server_创建时间.log关键词:phony dead长连接依旧存在,但是短链接无法连接,被判定为操作系统hang死,将通过长连接对故障节点下发重启节点命令。解决方案:联系华为工程师,给当前节点部署hang检测堆栈脚本,需要抓取hang时堆栈进行分析。[4]故障类型:内存超过70%阈值导致重启关键日志: ${GAUSSLOG}/cm/cm_server/cm_server_创建时间.log关键词:bigger than 70%内存使用率超过70%导致cms查杀,此阈值可以通过usage_threshold参数调整解决方案:可依照以下链接的方式初步排查,联系华为工程师内存定位三板斧:cid:link_0[5]故障类型:内存不足导致系统的oom查杀关键日志: /var/log/message关键词:oom-killeroom_killer(out of memory killer)是Linux内核的一种内存管理机制,在系统可用内存较少的情况下,内核为保证系统还能够继续运行下去,会选择杀掉一些进程释放掉一些内存。通常oom_killer的触发流程是:进程A想要分配物理内存(通常是当进程真正去读写一块内核已经“分配”给它的内存)→触发缺页异常→内核去分配物理内存→物理内存不够了,触发OOM。解决方案:可依照以下链接的方式初步排查后,联系华为工程师内存定位三板斧:cid:link_0[6]故障类型:主线程postmaster收到fast shutdown关键日志:DN:${GAUSSLOG}/pg_log/dn_xxxx /postgresql-创建时间.logCN:${GAUSSLOG}/pg_log/cn_xxxx /postgresql-创建时间.log关键词:fast shutdown主进程下发cancel信号导致实例退出。解决方案:检查${GAUSSLOG}/bin/gs_ctl/gs_ctl-创建时间.log若存在stop操作,说明存在手动关闭实例的情况。若不存在stop操作,请联系华为工程师。[7]故障类型:core首先需要确认是否配置core:没有配置的话需要先行配置。OS core配置教程如下:DWS-纯软core配置方案:cid:link_1DWS-HC/HCS/HCSO配core方案:cid:link_2请注意:core配置完成需要重启om_monitor生效,请预留时间窗口,防止影响业务。如果配置完成,但是异常的实例目录下不存在core文件检查bbox_core的开启情况以及生成目录:show enable_bbox_dump;show bbox_dump_path;如果bbox_core开启且目录与实例目录不一致,到此目录下查看core文件是否存在。确认core文件存在后联系华为工程师。3.3集群状态异常[1]主备不均衡DWS-纯软主备均衡:cid:link_3DWS-HC/HCS/HCSO主备均衡:cid:link_4集群均衡失败:cid:link_16若执行以上步骤未成功,请联系华为工程师[2]集群降级DWS-纯软gs_replace修复实例:cid:link_5DWS- HC/HCS/HCSO gs_replace修复实例:cid:link_6若执行以上步骤未成功,请联系华为工程师[3]集群不可用互信丢失导致集群不可用:cid:link_7磁盘使用率达100%导致集群不可用:cid:link_11集群不可用,实例状态处于Promoting状态:cid:link_8不符合以上场景,请联系华为工程师。可选应急操作:DWS-纯软重启集群:cid:link_9DWS- HC/HCS/HCSO重启集群:cid:link_10[4]集群只读磁盘使用率相关问题定位:cid:link_12不符合以上场景,请联系华为工程师。
  • [技术干货] GaussDB携手客户与伙伴,精彩亮相HDC.Cloud华为开发者大会2023
    7月7日,HDC.Cloud华为开发者大会2023在中国•东莞拉开了帷幕,大会邀请了众多行业专家、客户、合作伙伴和开发者,一起探讨AI、大数据、数据库、云原生、安全等技术话题,进行了全面深入的交流。在8日的“GaussDB数据库,打造轻量化迁移部署方案”专场,华为云数据库服务产品部副总经理庄乾锋分享了GaussDB的战略投入与开发者动态,国家管网集团油气调控中心资深信息技术工程师颜辉、掌数科技解决方案总经理高星和长亮科技数金总部研发副总裁张杰分享了他们和华为云GaussDB合作背后的故事。做强坚实数据底座,GaussDB与企业及开发者携手共进庄乾锋表示,数据库已经成为当今社会经济运行的关键根技术,它上连应用,下接基础设施,重要性不言而喻。可以说,数据库的可用性决定了整个应用的可用性,而分布式云数据库将是数据库发展的主要趋势。华为坚持自主创新,在数据库领域战略投入20多年,围绕客户全场景诉求打造了GaussDB分布式数据库,构建起了高可用、高安全、高性能、高弹性、高智能、易部署、易迁移“五高两易”的核心技术竞争力,目标是给世界一个更优选择。如今已经完成了华为内部核心系统的全面替换。华为的MetaERP系统,是使用传统商业数据库的典型代表。原ERP系统面临近7亿行的SQL脚本改造量、业务高峰期5-10倍的业务流量、最大160亿行大表的迁移。GaussDB通过UGO工具实现了近100%的自动化结构迁移,用4个小时就完成了708亿行数据的搬迁,并且通过了业务历史最大峰值20倍流量的压测。 华为终端云是新兴的生于云、长于云的云原生企业的典型代表。在成本、大规模集群以及数据模型多样化等挑战下,GaussDB原生的分布式架构使负载更加均衡,已经上线的最大单集群节点数超过了200个,支持多种生态,大大提升了资源利用率和运营效率。金融行业在自主创新的同时还需要完成应用和架构的创新,但大量的应用都重度依赖传统数据库的接口,存在很大的不确定性。GaussDB是当前国内唯一做到全栈软硬协同自主创新的数据库产品,有高度的语法兼容性和一站式的整体迁移解决方案,原生分布式架构大幅提升了系统的可用性。“面向开发者,我们也在思考如何让数据库更好用、更智能。”庄乾锋说, GaussDB的SQL全量全链路感知、分析及优化能力提供了易用、高效的应用开发体验,基于覆盖全流程的监控、智能化诊断能力又为客户提供了快速精准感知恢复的智能运维体验,高度的语法兼容性和一站式的迁移解决方案让迁移的过程、工作量、性能和上线过程从不确定变得确定,可以帮助开发者更快速、更稳妥地完成迁移工作。未来,GaussDB将进一步深化产学研用深度融合,联合企业、高校开发者等各方力量共同研究更多数据库根技术,共攀数据库产业高峰,共赢数字化未来。国家管网携手华为云GaussDB构筑新一代稳定数据底座国家管网集团油气调控中心资深信息技术工程师颜辉表示,GaussDB的稳定性与高效性足以满足国内企业核心系统建设的需求,同时,华为云GaussDB的应用实践证明了国内自主创新数据库承载企业核心数字化业务的能力。国家管网集团一直以来坚持通过业界先进技术,使能应用创新,沉淀管网资产,希望通过数字化创新打通数据孤岛,让数据涓滴成河,以现代信息技术助力“全国一张网”运营。借助华为云GaussDB,国家管网的生产运行管理系统(PPS系统)实现了数字生产力的大幅跃升。PPS系统是国家管网生产运行管理业务领域的核心关键信息系统,系统涵盖集团生产运行管理业务域多项主要流程,采用GaussDB构建其主数据库后,不仅有效保证了系统运行稳定性,存取数据的性能也得到大幅提升,满足了全管网一千余座场站在每日早八点的数据填报处理、报表分析计算以及管输计量结算等数万个并发业务操作对数据库的高性能要求,确保了用户操作低延迟的良好体验。针对系统年数据增长幅度较大、业务高峰时段数据库并发访问高的场景需求,通过选用GaussDB分布式部署形态,实现计算与存储资源的在线扩容与弹性扩展,突破了性能和存储容量的瓶颈;通过UGO+DRS工具链以最小的影响完成了业务的平稳迁移;通过DRS的异地实时数据同步保障了生产和灾备环境两端的数据一致性,此外GaussDB的全面运维手段和平台工具为开发人员提供了很多便利。PPS系统11个应用微服务模块以共享模式部署了一套GaussDB数据库集群,并采用GaussDB三节点三副本的典型部署架构,对业务的读写请求进行了负载均衡、多活冗余,实现整个系统无单点故障。颜辉还表示:“对GaussDB数据库的应用体验,改变了我们对国内自主创新数据库的应用感受和看法,希望在座的开发者们都有机会尝试应用华为云的GaussDB数据库产品,感受华为云数据库运维团队对开发者们的支持”。掌数科技与华为云GaussDB同心合力,赋能金融行业科技创新掌数科技解决方案总经理高星表示,“我们致力于成为GaussDB生态中最优秀的服务商之一,并协同GaussDB成为数据库产业生态中领先的数据库产品。”掌数科技是一家聚焦于证券和大资管行业,面向数据库和大数据技术、智能化场景应用以及行业信息技术应用创新领域的金融科技企业。作为华为在金融证券行业数据库技术领域的全面合作伙伴,掌数科技长期与华为云GaussDB合作,提供行业客户需要的GaussDB完整配套的软件产品和服务,打造面向客户与合作伙伴的GaussDB技术支撑与服务军团,并在证券、基金、银行、保险、信托等领域都形成了一系列的解决方案。双方联创打造的掌数产品体系已全面支撑金融行业科技创新,这里面涉及三个产品的联创:容灾备份一体化解决方案以保护企业业务连续性为目标,通过更低成本、更高效的方式,满足了不同行业业务场景下的数据安全性要求;GaussDB增值插件包提供 DBcopy、DBlink 等工具,重在解决数据库之间互联互通的难题;数据迁移及持续复制软件满足了系统数据实时迁移、实时汇总与实时分发需求,确保企业放心迁移。目前,该产品体系已经对某中大型证券公司法人清算系统的8000多张表进行了快速适配,通过工具自动化实现两套系统多维度的数据准确性校验,保障双轨期间的稳定运行;还支撑某超大型保险公司养老核心系统4天就完成了17TB的全量数据迁移,确保所有数据准确一致,有效兼容了各类数据异常问题;还基于同城1AZ、异地1AZ容灾建设方案、掌数容灾备份一体化解决方案为某大型基金公司带来数据容灾备份一体化管理。“未来,掌数科技将与华为云GaussDB继续联创,建设GaussDB数据库配套的应用生态体系,打造更多易用、有价值的数据库生态软件和工具,并持续完善GaussDB技术支撑与服务体系,推进更多项目实施落地,打造国内数据库生态服务标杆。” 高星说。长亮科技携手华为云GaussDB,助力银行分布式核心业务系统转型升级“长亮科技非常注重与华为的合作,我们持续投入资源,坚持与华为多款产品进行对接、积极推广,并且在客户现场持续进行测试验证。”长亮科技数金总部研发副总裁张杰表示。长亮科技是全球领先的金融科技解决方案服务商,为金融机构提供全栈、全域的金融IT解决方案,服务了银行、证券、基金、泛金融等领域800+客户。从2019年开始,长亮科技就与华为在数据库方面开始合作,不断进行产品的测试认证,致力于为银行客户提供更全面的整体解决方案。如今,长亮科技与华为云GaussDB已经在实验室做了深度对接认证,认证以表类型定义规范化、业务代码层优化、数据定义规范化、数据源定制化、数据拆分聚合处理、语法遵循规范为要点,选取了有关键代表意义的金融场景、亿级别的账户数和客户数,过程中重点关注读写分离、数据库备份与恢复、数据迁移等关键场景来进行测试。除了应用层面的测试,长亮科技也和GaussDB进行实际金融场景功能、双活、容灾等方面整体的自主创新验证,测试聚焦现金存取、账户转账等业务量最大的典型场景,验证结果均符合预期。“长亮科技与华为云GaussDB的联合方案具备高可靠、高兼容、灵活性、易运维、高弹性、高扩展等多重优势,通过业务龙头+技术龙头的强强联合,金融+互联网的业技融合,树立了典型案例和标杆,让金融创新再上新高。” 张杰说。在发展的路上,华为云GaussDB一直非常重视客户真实业务场景的诉求,也十分重视和伙伴们的合作共创。未来,华为云GaussDB也将坚持初心,以客户需求为导向,不断研磨数据库根技术,赋能千行百业数字化转型,并联手更多合作伙伴,共创欣欣向荣的数据库产业生态!Ps:点击链接观看精彩回播cid:link_0
总条数:1672 到第 页
上滑加载中