跑得更快!华为云GaussDB以出色的性能守护“ERP的心脏”
摘要:GaussDB已经全面支撑起MetaERP,在包括库存服务在内的9大核心模块中稳定运行,端到端业务效率得到10倍提升。
本文分享自华为云社区《跑得更快!华为云GaussDB以出色的性能守护“ERP的心脏”》,作者:GaussDB 数据库。
ERP作为华为企业经营最核心的系统,伴随着华为20多年的快速发展,支撑每年数千亿产值的业务和全球170多个国家业务的高效经营。其中的库存服务作为交易数据的第一站汇集地,可以说是ERP系统中最核心的应用之一。
库存服务不仅要与交易控制层的采购、订单、任务令、成本、核算、计划等模块交互,也和各种各样的作业层系统有着很深的联系,被比作“ERP的心脏”再合适不过。库存服务对齐经营实体的资产库存管理,提供六大核心库存服务,支撑计划、订单、采购、制造等业务秒级自循环,同时作为库存明细账(量/价/余额)的可信数据源,支撑集团财务核算,账实一致、账账一致。可以说库存服务的性能很大程度上决定着ERP系统的整体性能。
攻坚ERP库存服务“硬骨头”
作为“心脏”,库存服务的血液流量与流速有多大?仅中国区,库存服务的年处理交易需求就超过10亿行,日处理交易峰值达到500w行以上,高峰时期数十个系统同时发起库存交易,从接收交易需求到交易核算完成要经历8个环节、200多个校验的处理。
如何做到交易校验无误、现有量扣减准确、预留同步释放、提交计价有序,同时实现毫秒级响应?交易数据库在性能上遇到了极高的挑战。
高性能数据库GaussDB书写优异成绩
想拿下以性能为首要目标的库存服务,必然需要一款同样以性能称王的数据库做底层支撑。华为云GaussDB数据库以“高性能”的优势,成为库存服务改造的趁手利器。GaussDB充分融合了华为多年来软硬全栈协同的优势,在硬件领域,结合了鲲鹏处理器的多线程、原子指令、智能网卡的计算下推、RDMA的短时延高带宽、SCM的字节寻址持久化能力等,在软件技术领域,通过动态编译、向量化引擎等能力,实现了极致的数据处理能力。
然而,上线过程中挑战仍然存在。GaussDB团队积极攻坚,细切目标,逐个攻破上线过程中遇到的难题。
首先,是如何提高执行计划的准确性。库存服务有近10万条SQL,并且存在复杂的多表关联,所以,如何保证交易数据库执行计划的准确性成为TOP挑战。对此,攻关团队围绕压测过程中识别的索引漂移等核心痛点场景,突破了智能基数估计、自适应计划选择技术,从而优化了数据库执行计划的精准性,进一步保障了库存服务每一条SQL的执行性能。
其次,是如何解决高频交易的性能问题。库存服务中有近2.7TB的数据集中在5张高频交易表里,单表数据量超过了10亿行。为了保障高频交易时性能稳定不下降,攻关团队通过组合分区和大并发线程池等技术,在打散数据访问热点的基础上,优化了线程调度机制,一方面提高了系统的响应速度,另一方面也提升了硬件的资源利用率。最终的全链路压测结果显示,切换GaussDB后,库存服务总体交易性能显著提升,达到老ERP交易峰值的3倍。
最后,是如何将攻坚历程形成可借鉴的成功经验。对此,团队在合作攻关的同时,系统性地总结了基于GaussDB数据库的开发和调优的最佳实践经验,并汇总成完整的《GaussDB开发设计及编程规范》,为后续GaussDB在其他应用的上线提供了宝贵的借鉴经验和技术规范指导。
GaussDB助力MetaERP交易性能大幅提升
如今,GaussDB已经全面支撑起MetaERP,在包括库存服务在内的9大核心模块中稳定运行,端到端业务效率得到10倍提升。再造后的库存服务显示出强大的实力,在年结期间,库存服务每天处理库存作业峰值指令接近510万笔,GaussDB事务处理峰值达1.1万TPS,就ERP系统的业务逻辑复杂度而言,GaussDB具备优异的峰值处理能力。在如此高频的交易场景下,系统仍保证事务响应时间在20毫秒以内,主备同步延迟始终保持在毫秒级,CPU利用率平稳保持在60%以下,整个年结期间没有发生可用性与数据一致性事故,交易数据一致性达到99.9999%的金融级水平。
从业务层面看,MetaERP已经覆盖华为公司100%的业务场景和80%的业务量,一笔库存交易从产生到财务核算的时间从以前的70分钟减少到13秒,一笔库存余额与货龄的计算从以前的60分钟减少到16分钟,交易性能得到大幅度提升。
GaussDB出色的性能表现,使MetaERP系统中交易量和数据量最大的库存服务运行得更快。华为云GaussDB在这场攻坚中展示出卓越的高性能实力,并完成自我迭代,将不断朝着更高的性能目标迈进。

跑得更快!华为云GaussDB以出色的性能守护“ERP的心脏”的更多相关文章
- 升级的华为云“GaussDB”还能战否?
摘要:芯片.操作系统.数据库是现代信息技术领域的三大核心基础,做数据库,不仅需要技术和投入,对华为这种做通讯起家的企业,更需要的是一种并非玩票性质的态度. GaussDB,不仅蕴含着华为对数学和科学的 ...
- 揭秘华为云GaussDB(for Influx)最佳实践:hint查询
摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...
- 揭秘华为云GaussDB(for Influx):数据直方图
摘要:本文带您了解直方图在不同产品中的实现,以及GaussDB(for Influx)中直方图的使用方法. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第九期:最佳实践 ...
- 让DB2跑得更快——DB2内部解析与性能优化
让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!) 洪烨著 2013年10月出版 定价:7 ...
- UOJ 【UR #5】怎样跑得更快
[UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...
- 【UOJ#62】【UR #5】怎样跑得更快(莫比乌斯反演)
[UOJ#62][UR #5]怎样跑得更快(莫比乌斯反演) 题面 UOJ 题解 众所周知,\(lcm(i,j)=\frac{ij}{gcd(i,j)}\),于是原式就变成了: \[\sum_{j=1} ...
- 「UR#5」怎样跑得更快
「UR#5」怎样跑得更快 膜这个您就会了 下面是复读机mangoyang 我们要求 \[ \sum_{j=1}^n \gcd(i,j)^{c-d} j^d x_j=\frac{b_i}{i^d} \] ...
- 面试官:如何写出让 CPU 跑得更快的代码?
前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...
- 华为云GaussDB(DWS)内存知识点,你知道吗?
前言 在日常数据库的使用中,难免会遇到一些内存问题.此次博文主要向大家分享一些华为云数仓GaussDB(DWS)内存的基本框架以及基本视图的使用,以便遇到内存问题后可以有一个基本的判断. 注意,本篇博 ...
- [翻译] 5点建议,让iOS程序跑得更快
[文章原地址]http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-5-tips-to-increase-app-performanc ...
随机推荐
- pysimplegui之窗口大小,位子,主题等属性修改
重点 1finalize()或Window参数finalize=True 调用以强制窗口通过初始化的最后阶段.这将导致 tkinter 资源被分配,以便它们可以被修改.这也会导致您的窗口出现.如果您不 ...
- python数据类型、变量以及编码和字符串、格式化
1.数据类型包括整型.浮点型.字符串.布尔型. 整数如果位数太多可以用_隔开,浮点数可以用科学记数法表示,字符串要用单引号或者双引号括起来,布尔型的值只能为True和False 2.变量可以由数字.字 ...
- Python GDAL库在Anaconda环境中的配置
本文介绍在Anaconda环境下,安装Python中栅格.矢量等地理数据处理库GDAL的方法. 需要注意的是,本文介绍基于conda install命令直接联网安装GDAL库的方法:这一方法有 ...
- 【vue3-element-admin】ESLint+Prettier+Stylelint+EditorConfig 约束和统一前端代码规范
前言 本文介绍 vue3-element-admin 如何通过ESLint 检测 JS/TS 代码.Prettier 格式化代码.Stylelint 检测 CSS/SCSS 代码和配置 EditorC ...
- Pandas的使用
在数据分析工作中,Pandas 的使用频率是很高的,一方面是因为 Pandas 提供的基础数据结构 DataFrame 与 json 的契合度很高,转换起来很方便.另一方面,如果日常的数据清理工作不是 ...
- SMBMS超市管理系统(Javaweb项目)
SMBMS超市管理系统(Javaweb项目) 项目环境 jdk 1.8.0_261 mysql 8.0.21 IDEA 2021.2.2 项目架构 数据库 项目源代码 filer 字符编码过滤器 pa ...
- 微信小程序隐藏页面滚动条
开发小程序时,经常会碰到页面长度超过屏幕高度,然后下拉时会出现滚动条,对于一些有强迫症的人来说是不可忍受的. 网上看了好多,写的.都评论有起作用或者不起作用的. 我在这分享一个全局隐藏滚动条的方式. ...
- 自定义alert、confirm、prompt的vue组件
Prompt.vue组件 说明: 通过props定制定制的Prompt,可选值 mode 默认值:prompt, 其他模式:confirm.message(简单的提示,可设置提示显示时间,类似aler ...
- springcloud~Sentinel
介绍 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 是面向分布式.多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由.流量控制.流量整形.熔断降级.系统自适 ...
- Prism Sample 24-NavigationJournal
本例是在上一案例中导航参数的基础上增加了导航的历史记录功能,就是向前向后的功能. 导航本身很简单,以下代码就实现了: public void OnNavigatedTo(NavigationConte ...