记一次MES项目上线失败总结--数据库层面+代码层面优化方案

news2024/12/22 23:14:06

        难熬三个夜晚!!!按原计划将ERP的生产订单、排程单、牌卡计划、小包装、装箱单等生产数据通过接口的形式同步到MES系统,其中生产订单、排程单和小包装、装箱单的数据量相对较少,合计大概50w条左右的数据,同步时间在2小时内。牌卡计划的数量在150w条左右,同步时间花了5个小时,这个数据量正常不应该同步那么久,上线后再通过代码层面及数据库层面进行分析,得出几个优化点:

        一、代码层面

1、数据同步过来后采用​ Mybatis Plus提供的批量操作接口SaveOrUpdate

Tips:

  • saveBatch、updateBatch: 可放心使用,不存在性能问题。

  • saveOrUpdateBatch: 存在隐藏的性能问题,可使用场景:新增多(且新增数据的id为null),更新少。

保存或更新,这是两个不同的操作。一条数据是需要执行保存操作,还是更新操作,mp框架会进行推断。

推断逻辑:

(1) 如果该数据中id字段为null, 一定是新增

(2)如果该数据中id字段不为null, mp框架拿着id去数据库查一次,如果根据id没查到数据,则本次是需要插入;否则,本次是需要更新。

​ 这个推断过程就是一个隐患,假设现在有100条数据要操作,其中10条要做的是插入,90条是更新。那么,推断过程就会至少有90次sql请求。如果数据量更大,显然是不合理的。

        二、数据库层面

1、通过配置文件修改隔离级别

REPEATABLE READ(可重复读)改成 READ COMMITTED(读已提交数据

在CentOS 7.9上安装的MySQL 8.0,要通过配置文件修改事务隔离级别,你需要编辑MySQL的配置文件my.cnf(在非Windows系统上通常位于/etc/my.cnf或/etc/mysql/my.cnf)。

以下是修改隔离级别的步骤:

打开my.cnf文件。

在[mysqld]部分添加或修改transaction-isolation选项。例如,要设置隔离级别为READ-COMMITTED,你可以添加以下行:

[mysqld]
transaction-isolation = READ-COMMITTED

保存并关闭文件。

重启MySQL服务以使更改生效:

sudo systemctl restart mysqld

验证更改是否生效。登录到MySQL,并执行以下命令:

mysql -u root -p

然后,在MySQL提示符下执行:

SHOW VARIABLES LIKE 'transaction_isolation';

        三、调整List大小

处理内存溢出,java.lang.OutOfMemoryError: GC overhead limit exceeded

问题根因:列表持续增长,但由于它是静态的,并且没有任何代码来移除旧数据或设置适当的退出条件,因此会导致内存泄漏

处理方案:为了解决内存泄漏问题,我们需要确保不再持有不再需要的对象的引用,并合理配置JVM的堆内存。超过50的时候,进行保存并clear集合。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109700.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年实体门店和企业怎么做短视频矩阵获客?为什么要做短视频矩阵?一文告诉你短视频矩阵源码系统搭建

短视频矩阵获客是一种基于多个短视频账号,通过不同职能划分和策略组合,实现更高效、更精准的客户获取方式。 一、短视频矩阵是什么? 短视频矩阵是指由多个短视频平台通过某种方式连接在一起,形成一个统一的短视频发布、分享和观…

TriforceAFL部署、使用与原理分析

文章目录 前言1、概述1.1、工作原理1.2、工作流程1.2.1、编译TriforceAFL1.2.2、编译TriforceLinuxSyscallFuzzer1.2.3、初始化资源1.2.3.1、种子初始化1.2.3.2、GuestOS初始化 1.2.4、afl-fuzz调度1.2.5、启动待Fuzz目标 2、安装与使用2.1、安装方法2.1.1、部署系统依赖组件2.…

fpga入门名词(1)

这是第一代FPGA ,在 FPGA(现场可编程门阵列)设计中,LCA(逻辑单元阵列)通常由几个关键组件构成,包括 IOB、CLB 和 Interconnect。以下是这些组件的简要说明: 1. IOB(Input/Output B…

六款好用的企业防泄密软件推荐|文件防泄密软件哪个好

在当今信息化高速发展的时代,企业数据的安全与防泄密已成为每个企业不可忽视的重要议题。随着业务数据的不断增加和传输渠道的多样化,如何有效防止敏感信息泄露,成为企业管理者面临的一大挑战。幸运的是,市场上涌现出众多优秀的企…

6.1图的基本定义

1.有向图 2.无向图 3.完全图 无向完全图:任意两个顶点都存在边,n个顶点有n(n-1)/2条边 有向完全图:任意两个顶点间都存在方向相反的两条弧,有n(n-1)条边. 4.连通,连通图,连通分量--无向图 连通:顶点v到顶点w有路径存在 连通图:任意两点间都存在路径 连通分量/极大连通子图…

Kafka【十二】消费者拉取主题分区的分配策略

【1】消费者组、leader和follower 消费者想要拉取主题分区的数据,首先必须要加入到一个组中。 但是一个组中有多个消费者的话,那么每一个消费者该如何消费呢,是不是像图中一样的消费策略呢?如果是的话,那假设消费者组…

C++11,可变参数模板,lambda表达式,包装器

可变参数模板 在C11中模板也可以接收多个不定参数&#xff0c;就和int printf(const char *format, ...);函数一般模板也可以接收多个参数&#xff1b; // 可变参数模板 template<class ...Args> void testArgs(Args... args) { } int main() {testArgs(123…

【简单】 猿人学web第一届 第19题 乌拉乌拉

数据接口分析 数据接口为 https://match.yuanrenxue.cn/api/match/19 请求参数只需要携带 页码 cookie 只需要携带 sessionid 请求参数 和 cookie 都没有加密字段&#xff0c;直接用 python 请求 请求失败了 查看协议是 h2 的&#xff0c;再试试 httpx 请求 还是一样的结果…

Creating OpenAI Gym Environment from Map Data

题意&#xff1a;从地图数据创建 OpenAI Gym 环境 问题背景&#xff1a; I am just starting out with reinforcement learning and trying to create a custom environment with OpenAI gym. However, I am stumped with trying to create an environment (with roads and in…

【论文速读】| SEAS:大语言模型的自进化对抗性安全优化

本次分享论文&#xff1a;SEAS: Self-Evolving Adversarial Safety Optimization for Large Language Models 基本信息 原文作者: Muxi Diao, Rumei Li, Shiyang Liu, Guogang Liao, Jingang Wang, Xunliang Cai, Weiran Xu 作者单位: 北京邮电大学, 美团 关键词: 大语言模…

Python 全栈系列267 telegraf、influxdb和grafana

说明 没想到如此丝滑 本来是因为想稍微了解一下influxdb&#xff0c;然后发现和telegraf配套能干监控&#xff0c;然后正好之前又起了grafana,然后瞬间就通了。 内容 1 telegraf Telegraf 是一个开源的服务器代理&#xff0c;用于收集、处理和发送数据。它是 InfluxData 公司…

cowrie部署中遇到的坑

首先&#xff0c;这个cowrie已经比较老了&#xff0c;没有好看的展示界面&#xff0c;当前跟mhn结合使用的只能是2.2版本&#xff0c;不是迫切需要的话不建议布。 mhn也比较老了&#xff0c;界面太过简洁&#xff0c;推荐hfish&#xff0c;部署方便&#xff0c;好看。 坑1&…

STM32重定义printf,实现串口打印

在“usart.c”文件中加入以下代码 #ifdef __GNUC__#define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endifPUTCHAR_PROTOTYPE{HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);return ch; }…

鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比

左y轴数值不变&#xff0c;右y轴改成百分比&#xff0c;需要通过自定义RightAxisFormatter实现IAxisValueFormatter接口&#xff0c;将右y轴的数值改成百分比文本&#xff0c;RightAxisFormatter类如下&#xff1a; class RightAxisFormatter implements IAxisValueFormatter …

navigator.mediaDevices.getUserMedia检查用户的摄像头是否可用,虚拟摄像头问题

在Web开发中&#xff0c;检查用户的摄像头是否可用是一个常见的需求&#xff0c;尤其是在需要视频聊天或录制视频的应用程序中。navigator.mediaDevices.getUserMedia() API 提供了这一功能&#xff0c;它允许你请求访问用户的媒体设备&#xff0c;如摄像头和麦克风。虽然这个A…

【PPT学习笔记】使用PPT制作动画/手书/视频等作品的适配性和可能性?

【PPT学习笔记】使用PPT制作动画/手书等作品的可能性&#xff1f; 背景前摇&#xff1a;&#xff08;省流可不看&#xff09; 最近找到另外一份新的实习工作&#xff0c;有很多需要用到PPT动画的地方。 然而&#xff0c;我们之前制作的理工科PPT全是摒弃了形式主义的艰苦朴素…

AUSD稳定币正式在Sui上线

继Agora在五月份的早期公告之后&#xff0c;AUSD稳定币现已正式在Sui上线。AUSD为Sui日益增加的原生资产列表增添了关键的一环。 Agora此前在以太坊和Avalanche上取得成功&#xff0c;迄今为止已铸造了近6000万美元的稳定币。如今&#xff0c;AUSD集成到Sui网络中&#xff0c;…

C语言基础——⑩③数据结构——②栈和队列

一、栈(Stack) 1、基本概念 栈是一种逻辑结构&#xff0c;是特殊的线性表。特殊在&#xff1a; 只能在固定的一端操作 只要满足上述条件&#xff0c;那么这种特殊的线性表就会呈现一种“后进先出”的逻辑&#xff0c;这种逻辑就被称为栈。栈 在生活中到处可见&#xff0c;比…

使用Python进行数据可视化:让你的数据“活”起来

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 安装与导入 要使用Matplotlib&#xff0c;首先需要安装。可以使用pip进行安装&#xff1a; pip install matplotlib安装完成后&#xff0c;可以在Python代码中导入Matplotlib库&#xff1a; import matplotlib.py…

2024跨境旺季营销:哪个平台是流量之王?

跨境电商的旺季即将来临&#xff0c;对于卖家们来说&#xff0c;如何进行有效的营销推广至关重要。在多渠道广告覆盖的策略下&#xff0c;选择合适的平台成为关键。那么&#xff0c;哪些平台是跨境旺季营销的首选呢&#xff1f; 一、社交媒体平台 1、Instagram 以图片和短视频…