跑得更快!华为云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 ...
随机推荐
- 使用HTMLform表单操作腾讯云DNS控制台
在使用中经常需要修改DNS记录,或者查询.删除操作.每次都得登录腾讯云控制台,腾讯云比较鸡肋的一点就是需要进行微信扫码登录,每次操作太不方便. 可以使用api接口进行操作腾讯云上的产品.所以使用HTM ...
- KubeSphere 升级 && 安装后启用插件
KubeSphere 升级 root@master1:~# export KKZONE=cn root@master1:~# kk upgrade --with-kubernetes v1.22.1 ...
- pandas之面属行统计
描述统计学(descriptive statistics)是一门统计学领域的学科,主要研究如何取得反映客观现象的数据,并以图表形式对所搜集的数据进行处理和显示,最终对数据的规律.特征做出综合性的描述分 ...
- pysimplegui之读写配置项操作
用户设置 API 在 4.30.0 版中,有一组新的 API 调用可用于帮助"用户设置".将用户设置视为自动写入硬盘的字典.基本上就是这样. 在 4.50.0 版中,除了现有的 J ...
- 家用wife密码设置
1.在浏览器上面输入ip地址:http://192.168.1.1/或http://192.168.0.1/出现路由器登陆窗口输入用户名跟密码.用户名默认一般为:admin,密码为空或为:admin ...
- Arrays.asList() 示例
1 package Test.others; 2 3 import java.util.Arrays; 4 import java.util.Collections; 5 import java.ut ...
- Kurator v0.3.0版本发布
摘要:2023年4月8日,Kurator正式发布v0.3.0版本. 本文分享自华为云社区<华为云 Kurator v0.3.0 版本发布!集群舰队助力分布式云统一管理>,作者:云容器大未来 ...
- django使用多个数据库实现
一.说明: 在开发 Django 项目的时候,很多时候都是使用一个数据库,即 settings 中只有 default 数据库,但是有一些项目确实也需要使用多个数据库,这样的项目,在数据库配置和使用的 ...
- Django笔记二十七之数据库函数之文本函数
本文首发于公众号:Hunter后端 原文链接:Django笔记二十七之数据库函数之文本函数 这篇笔记将介绍如何使用数据库函数里的文本函数. 顾名思义,文本函数,就是针对文本字段进行操作的函数,如下是目 ...
- 一天吃透SpringMVC面试八股文
说说你对 SpringMVC 的理解 SpringMVC是一种基于 Java 的实现MVC设计模型的请求驱动类型的轻量级Web框架,属于Spring框架的一个模块. 它通过一套注解,让一个简单的Jav ...