网赌网址

您当前位置:网赌网址 > 品牌理念 >

一个知名零售企业ERP系统数据库优化经典案例

发布日期:2019-06-23 18:58浏览次数:

  知识的时候特别喜欢看案例,因为优化的手段是容易掌握的,但是整体的优化思想是很难学会的。这也是为什么自己特别喜欢看案例,今天也分享自己做的优化案例。

  之前分享过OA系统、HIS系统,今天我们来一个最常见的ERP。ERP系统各行各业都在用,不同行业也有不同的特点,博主在做研发的时候还自己写过ERP也算是比较熟悉了。

  不管是本文分享的零售类,还是鞋服门店、家居、汽车、地产等等,也不管是某友、某碟,ERP有一个共同的特点,单据流程长,业务复杂,热点表明显,数据量大,涉及众多系统接口,各种大数据的统计报表....传统行业又缺乏DBA精心管理。

  最近一直很忙,博客产出也少的可怜,今天整理了一下自己做过优化或各种方案的客户已经超过千家,涉及各行各业,今天分享的案例算是在这些客户中比较典型的了,没有什么高大上都是常见的问题。在之前的博客中都有过提及,那么本篇我们就结合之前的技术点来看看这个案例。

  保存个单据要好几分钟,很多操作都超时,尤其到下午4点左右各种超时,收款什么的都收不了,查个报表一个小时,下班了还没查完,经常因为系统慢而加班,业务部门怨声载道。这个事情已经上报公司高层,IT压力非常大!

  首先我们来看一下这个系统配置及现状,为什么说这个客户经典?往下看就知道了...

  服务器的配置是:8路 24 core 做了超线个逻辑CPU,内存1T,磁盘全闪:

  乍一看也许觉得是数据量太大了导致性能的问题,可又一想这么强力的服务器也不至于那么慢呀?难道是代码的问题?难道需要分库分表?

  看到这些基本的指标,除了慢你能看出什么?问题出在哪里?怎么样快速解决?能有一个优化的步骤呈现在眼前么?

  系统是真的很慢,慢语句数量很多系统阻塞也很严重,确实和客户反映的慢可以吻合。那为什么这么慢?什么原因导致的?

  系统压力:访问压力(也是我们常说的并发)其实并不大,用户连接数也没想像的那么多;

  数据库内部运行因素:从各种指标来分析,系统语句等待时间太长,导致语句完成慢,而等待主要有两部分:

  语句之前的阻塞太严重了,"LCK_M_",而且等待时间过长,竟然平均达到几百秒。

  再分析...这么强的硬件,并不大的访问压力,竟然造成瓶颈?语句写的烂?程序实现的不好?缺索引?环境配置不对?

  很多时候系统慢要究其原因,难道上线时候就这么慢?那不可能,厂商根本无法交付的!那么问题来了,系统是什么时候开始慢的?对系统做过哪些调整?

  我靠!!!厂商完全不配合,工程师对系统及其不熟悉,一问三不知,最近做什么改动也说不清,用户也不知道。厂商给的结论:继续加硬件,更强的IO,数据分离减小数据量……

  既然是数据库问题,那我们就数据库下手吧!从一名数据库从业人员的角度来说,看到这样的系统一定要先解决大面积等待问题。个人经验来看很多系统大面积等待解决系统会有个很大的提升和改善。

  配合一些常规的调优手段,阶段一开始了。主要给系统大面积创建影响高开销大的索引,调整系统参数,优化tempDB等....具体不细说了,前面系列文章中都有。

  一般系统上面一轮优化会有明显的改善,我认为这一轮以后系统会明显变快,语句运行环境合适,索引什么的合理资源消耗自然就少,内存和IO压力也会有所减少。

  系统内存,IO压力趋于平稳,慢语句数量有所减少,但依然很多,阻塞依然存在,超过2分钟的语句依然很多。

  调研后,我遇到了最常见也是最大的问题: 语句慢由于程序。在HIS的优化案例中就是因为程序大量使用自定义函数,我们没法改,我们巧妙的绕过。那么这次我们如何绕过?

  报表通过一系列复杂的查询插入到物理临时表,啥叫物理临时表? 就是非#temp 而是真真正正的插入到表中,用完在delete!

  程序中存在连接泄露,简单理解成程序报错后事务不能有效处理,导致事务未提交阻塞系统。

  针对第一部分报表,语句更是复杂至极,这东西不是短期就可以优化的,考虑分出去;

  经过前两个阶段的优化一般系都会明显好转,只剩报表没有处理,和一部分高消耗的频繁接口查询,这部分我们采用报表分离的方式去解决。

  这里面我们遇到一个问题,报表要写物理表。用2012 自带的AlwaysOn是没有办法实现的(辅助节点只能读)。

  我们想到是否可以把写入物理表变成写入#temp 临时表? 软件厂商给出的结论是:不可能....

  那这里面我们使用了第三方的产品Moebius集群(这里真的不是广告....)

  多活集群,几个节点数据实时一致,这样的基本知识就不普及了...集群介绍也免了;

  首先程序只有一个连接字符串没法把报表指向到辅助服务器,我们只能通过Moebius集群的前端调度引擎,定制规则把报表所使用的存储过程定点指向到第二台服务器,解决了程序不能分离的问题。

  其次Moebius集群可以实现两个节点都可写,以满足辅助节点报表查询写入物理表的需要。

  再次临时表的写入量太大,千万级别数据同步也是问题,这里好就好在程序中写入的物理临时表都是以“Temp_” 开头并以GUID类型结尾。我们在这里设置了只要这样的表写入不会反向同步给主节点,这样根据规则控制双向同步满足了报表的要求,最终实现了报表的分离。

  语句已经优化,阻塞情况也被解决,CPU、内存、磁盘压力也没有了,系统肯定快起来了!

  (虽然还有慢语句存在,毕竟是TB级别的数据量,不影响业务运行客户完全可以接受。)

  往往优化真的不是简单的调一调语句,加一加硬件,全面地分析是根本解决性能问题的首要任务。

  当然不是所有的优化都可以彻底解决,如本文中报表的改善是通过读写分离的方式实现,很多时候在ERP系统中报表的处理方式都是如此,报表如果细致优化,那需要多长时间呀!也许都是重写了。

  全面分析系统问题 → 宏观层面解决(环境、数据库内部运行因素、硬件压力) → 低效代码调整 → 架构方案实现(稳定、安全、高效) → 最终系统顺畅无压力。

  当然此案例中客户的数据量已经到了可以做数据分离、分区分表的阶段,但分享本案例的原因也在于,不要认为上TB的数据一定就要分库分表的各种拆分,在性能调优的简单付出中依然可以收获更大的收益,真心希望看官们在选择分库分表付出的极大代价之前可以找专业的人全面分析一下,仔细评估你的系统到底是什么瓶颈!

  文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

  点击右方“佳嵌图标”,可以查看所有课程。我们将《嵌入式工程师-系列课程》分成两大阶段:第一阶段:《计算机体系结构》课程&

  作为面向人工智能推断任务的产品,思元270板卡在ResNet50上推理性能超过10000fps。ML....

  Facebook负责Libra项目的David Marcus介绍了该项目的宏伟目标:“Libra的使....

  根据Nature官方发布的文章,其测量方法,即分数式计量(fractional count,FC)是....

  黑客疯狂盗取数据库,是因为这些数据库对于他们来说就是产生利益价值的金库。

  谁需要4核系统? 毫无疑问,4核处理器由于性能非常高,所以主要应用在服务器上,企业级应用成为了多核产品的主战场。目前,双...

  我从访问数据库中获取数据。 但是在某些表中有一些NULL空格。 我需要没有空值的整个表。 所以我找到了删除null函数,但我...

  本文档的主要内容详细介绍的是PHP的Mysql数据库备份脚本详细资料免费下载。

  各位大神在不在啊? 现在想利用STM32+8266实现远程访问Mysql数据库, 由于网络基础薄弱, 简直一点头绪没有, 只知道应该利...

  人脸识别技术通过人脸识别系统采集重点人群的二代身份证及人脸图像信息,为他们建立统一的电子人脸数据库。

  本文档的主要内容详细介绍的是数据库教程之PHP访问MySQL数据库的理论知识详细说明包括了:1.ph....

  本文档的主要内容详细介绍的是数据库教程之ZendFramework框架的详细资料说明包括了:1.Ze....

  本文档的主要内容详细介绍的是数据库教程之PHP数组和字符串的理论知识详细资料说明

  对于开发游戏项目的同胞来说,Timer 这个东西肯定不会陌生,今天对以前自己经常使用的定时进行了一番....

  多线程技术是在控制工程中常用的技术,因为在闭环系统中有着大量的数据处理,这些处理显然不可能放在主线程....

  微软全球数据平台解决方案总监 Jack C. Tang 表示:「数据库是企业业务上云的关键一环,截止....

  人脸识别数据是否侵犯隐私,受到国际社会的广泛关注。作为科技巨头,微软一直声称希望数据能够得到正确的使....

  本文提供了一种利用PHP查询MYSQL数据库生成动态表单,并由此表单尽量少的占用系统资料实现接受用户....

  本文档的主要内容详细介绍的是PHP与MYSQL数据库如何进行交互详细方法实验说明。一、【实验目的】1....

  本文档的主要内容详细介绍的是数据库教程之面向对象的详细资料说明包括了:1.PHP的类、对象以及成员属....

  本文档的主要内容详细介绍的是VMWare7.0虚拟机双机热备图列教程资料免费下载。

  IDC《2018年下半年中国AI基础架构市场跟踪报告》显示,2018年下半年中国GPU服务器市场规模....

  近年来,微服务在应用开发和部署方面取得了显著的进步。将应用开发或者重构成微服务以分离服务,通过 AP....

  在进行post数据到服务器,返回1,200,9 200表示返回成功了,9为服务器的内容为9个字节,是正确的,但是从服务器看,服务器收不...

  GSM模块可以通过gprs发信息到远程服务器,但是要怎样才能接收远程服务器的信息呢?AT指令要怎样配置?...

  请问我用SIM808gprs与服务器重新连接时出现ALREADY CONNECT错误是怎么回事?

  大家好,请教一下,我用SIM808gprs用tcp协议连接服务器时,有时候断开重新连接时,AT+CIPSTART指令会返回ERROR...

  本人最近在学习开发串口WiFi模块,但是没有很好的资料。 数据流程是:stm32—串口连接—WiFi模块—外网服务器(yeelink),...

  本文档的主要内容详细介绍的是一些大电流设计培训PPT资料合集免费下载包括了: 1.刀片式服务器(数据....

  在企业云化背景下,企业对数据及时性、系统稳定性以及跨工作场景的灵活处理能力的要求越来越高,因此需要重....

  我想利用900A实现向服务器上传数据,大概步奏是什么呀? 只需要一个公网IP就可以了吗?...

  通过一台服务器,整合初始化数据,加强企业内部协同管理,提高运营效率,是小企业生产力提升的一剂良药。

  1. 结构体中的数组,不能直接赋。2. 同类型的结构体可以直接用变量名实现赋值,例: s[2],m[....

  本书内容主要包括 MySQL 5.6 的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、数....

  solr可以部署到单独的服务器上(WEB服务),它可以提供服务,我们的业务系统就只要发送请求,接收响....

  而我们在添加商品的时候solr库没有添加到该商品的索引,导致我们在搜索时搜索不到该商品的信息,想要同....

  solr在文档1和文档2中都有出现,所以对应的文档ID列表中既包含文档1的ID也包含文档2的ID,文....

  由于lucence是基于关键词索引查询的,那我们首先要取得这两篇文章的关键词。如果我们把文章看成一个....

  本文档的主要内容详细介绍的是Labview数据库连接工具VI的详细资料说明。

  Kettle 是”Kettle E.T.T.L. Envirnonment”只取首字母的缩写,这意味....

  STK提供分析引擎用于计算数据、并可显示多种形式的二维地图,显示卫星和其它对象如运载火箭、导弹、飞机....

  受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明

  本文档的主要内容详细介绍的是受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明。....

  本文档的主要内容详细介绍的是使用服务器和客户机及java进行网络通信的程序和流程图免费下载。

  数字世界的洪流滚滚向前,数据、算法与个人生活、社会治理、经济结构交相辉映的智能时代呼之欲出。在互联网....

  asp微型调试工具是一款绿色小巧实用的免费的ASP本地调试工具。它能够帮助用户把自己的机子当服务器使....

  云存储配置错误继续困扰着数据隐私领域,数据显示,在网络上的数百万人的就业和健康信息流露在暗网等地方,....

  本文档的主要内容详细介绍的是PHP的使用教程之操作数据库的详细资料说明包括了:1.掌握PHP连接数据....

  苹果致力于 Homekit 智能家居平台的推广和完善,同时使用其品牌影响力及终端的普及率可以很大程度....

  在当前互联网发展迅速、电子商务网站层出不穷的形势下,对网站开发的效率和质量提出了越来越高的要求。对于....

  除了巩固华为海思晶圆代工、封测代工供应链以及台系逻辑IC供应体系外,疯狂扫货力道已经蔓延到功率基础元....

  服务器产业受贸易战影响的生产环节主要在主机板,因输美机种后段整机组装多不在中国进行,而是在贴近客户所....

  从预约门诊到缴费和报销,再到检验和检查的结果查询,越来越多的看病操作可以通过移动应用,或者公众号上进....

  根据笔者的工作实践经验发现,在平时所做的项目中。PLC与PLC之间的通讯是必不可少的,但是通讯的类型....

  RADIUS的全称为Remote Authentication Dial-In User Servi....

  其中,近8成销售额来自于4卡以上GPU服务器,占比达到80.4%;16卡GPU服务器增长迅猛,销售额....

  如何使用netbeans连接数据库并将access数据写入的详细资料说明

  本文档的主要内容详细介绍的是如何使用netbeans连接数据库并将access数据写入的详细资料说明....



相关阅读:网赌网址

Copyright @ 2019 版权所有    网络经营许可证    

网赌网址 | 网站地图