摘要: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的心脏”的更多相关文章

  1. 升级的华为云“GaussDB”还能战否?

    摘要:芯片.操作系统.数据库是现代信息技术领域的三大核心基础,做数据库,不仅需要技术和投入,对华为这种做通讯起家的企业,更需要的是一种并非玩票性质的态度. GaussDB,不仅蕴含着华为对数学和科学的 ...

  2. 揭秘华为云GaussDB(for Influx)最佳实践:hint查询

    摘要:GaussDB(for Influx)通过提供hint功能,在单时间线的查询场景下,性能有大幅度的提升,能有效满足客户某些特定场景的查询需求. 本文分享自华为云社区<华为云GaussDB( ...

  3. 揭秘华为云GaussDB(for Influx):数据直方图

    摘要:本文带您了解直方图在不同产品中的实现,以及GaussDB(for Influx)中直方图的使用方法. 本文分享自华为云社区<华为云GaussDB(for Influx)揭秘第九期:最佳实践 ...

  4. 让DB2跑得更快——DB2内部解析与性能优化

    让DB2跑得更快——DB2内部解析与性能优化 (DB2数据库领域的精彩强音,DB2技巧精髓的热心分享,资深数据库专家牛新庄.干毅民.成孜论.唐志刚联袂推荐!)  洪烨著 2013年10月出版 定价:7 ...

  5. UOJ 【UR #5】怎样跑得更快

    [UOJ#62]怎样跑得更快 题面 这个题让人有高斯消元的冲动,但肯定是不行的. 这个题算是莫比乌斯反演的一个非常巧妙的应用(不看题解不会做). 套路1: 因为\(b(i)\)能表达成一系列\(x(i ...

  6. 【UOJ#62】【UR #5】怎样跑得更快(莫比乌斯反演)

    [UOJ#62][UR #5]怎样跑得更快(莫比乌斯反演) 题面 UOJ 题解 众所周知,\(lcm(i,j)=\frac{ij}{gcd(i,j)}\),于是原式就变成了: \[\sum_{j=1} ...

  7. 「UR#5」怎样跑得更快

    「UR#5」怎样跑得更快 膜这个您就会了 下面是复读机mangoyang 我们要求 \[ \sum_{j=1}^n \gcd(i,j)^{c-d} j^d x_j=\frac{b_i}{i^d} \] ...

  8. 面试官:如何写出让 CPU 跑得更快的代码?

    前言 代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能. CPU 内部嵌入了 CPU ...

  9. 华为云GaussDB(DWS)内存知识点,你知道吗?

    前言 在日常数据库的使用中,难免会遇到一些内存问题.此次博文主要向大家分享一些华为云数仓GaussDB(DWS)内存的基本框架以及基本视图的使用,以便遇到内存问题后可以有一个基本的判断. 注意,本篇博 ...

  10. [翻译] 5点建议,让iOS程序跑得更快

      [文章原地址]http://mobile.tutsplus.com/tutorials/iphone/ios-quick-tip-5-tips-to-increase-app-performanc ...

随机推荐

  1. 系统优化脚本支持Ubuntu和CentOS

    系统优化脚本支持Ubuntu和CentOS 经常会部署各种用途的操作系统,但在这些工作中,我们会发现很多工作其实是重复性的劳动,操作的内容也是大同小异,基于这类情况,我们可以把相同的操作做成统一执行的 ...

  2. python程序,实现以管理员方式运行程序,也就是提升程序权限

    quest UAC elevation from within a Python script? 我希望我的Python脚本能够在Vista上复制文件. 当我从普通的cmd.exe窗口运行它时,不会生 ...

  3. [Windows/Linux]判别服务器: 虚拟机 | 物理机 ?

    物理主机,一般称: [宿主机] 虚拟机信息,一般涉及如下关键词: VMware : VMware 虚拟化技术 Vistualbox KVM(Kernel-based Virtual Machine): ...

  4. [大数据]Hadoop简述

    1 Hadoop:发展沿革 摘要:1个人(Doug Cutting).2个公司(Google.Cloudera) 1.1 渊源 Hadoop项目 最初开发者/创始者: Doug Cutting(道格· ...

  5. 前端里那些你不知道的事儿之 【window.onload】

    作者:京东科技 孙凯 一.前言 相信很多前端开发者在做项目时同时也都做过页面性能优化,这不单是前端的必备职业技能,也是考验一个前端基础是否扎实的考点,而性能指标也通常是每一个开发者的绩效之一.尤其马上 ...

  6. [Go] 递归获取目录下的文件

    操作示例: ./scan /Document/dir 代码: // 定义递归文件树结构体 type treeList struct { Path string `json:"path&quo ...

  7. Redis(四)主从复制

    主从复制 简介 主机数据更新之后根据配置和策略,自动同步数据到备机的Master/Slaver机制,Master以写为主,Slaver以读为主. 这样的机制能够实现: 读写分离:Master以写为主, ...

  8. T-SQL基础教程Day3

    第三章 联接3.1交叉联接交叉联接是最简单的联接类型.交叉联接仅执行一个逻辑查询处理阶段--笛卡尔乘积将一个输入表的每一行与另一个表的所有行匹配SQL Server支持交叉联接的两种标准语法:ANSI ...

  9. pygame:简易游戏(飞机大战)

    import math import random import pygame import sys # pygame初始化 pygame.init() # 得分初始化 score = 0 # 创建s ...

  10. [Pytorch框架] 1.2、Pytorch环境搭建

    文章目录 1.2 Pytorch环境搭建 1.2.1 安装Pytorch 1.2.2 配置 Jupyter Notebook 1.2.3 测试 1.2.4 问题解决 问题1:启动python提示编码错 ...