kettle插件-高性能插入更新组件Upsert

news/2025/3/6 23:14:45/文章来源:https://www.cnblogs.com/zjBoy/p/18751426

场景:假如T日需要将a表中T-1日的数据同步到b表。由于某种业务需求a表中已经同步到b表中的数据发生了变化需要重新同步,这个时候就会用到插入更新插件,也就是

说a表中数据重新同步b表,若b表中存在此数据(根据唯一id)则执行更新操作,否则执行插入操作。

1、软硬件环境

本次教程基于本机docker版mysql 8.x数据库进行测试,如下图所示:

 

电脑是基于本人mac笔记本,配置如下:

 2、生成数据

使用表输出组件往t1(id,name,createtime)表中插入100条数据,采用单线程5000笔批量提交方式,速度在2.6w/s左右,如下图所示:

 

表输出步骤配置如下:

 初始化数据如下:

 

3、使用插入/更新步骤,存在数据则更新,不存在则插入新数据。如下图所示

性能非常差,原因是每次都需要将旧数据查出来,然后和新数据对比是否有变化,有则执行更新操作,无则插入数据。每条数据都要和数据库交互两次。

 数据更新如下:

4、使用自研Upsert组件,执行插入更新操作,如下图所示:

自研Upsert插件单线程速度在1.4W/s,之所以速度比原有插入/更新大幅提升,是因为Upsert处理每条数据时只需要和数据库交互一次。

这里验证的是假如每条数据都发生了变化,若有少量变化或者没变化速度将大幅提升。

Upsert配置如下:

 

 

更新数据如下:

数据没有变化是Upsert执行如下图所示:

注:本次测试结果是基于本地环境,开单线程的测试结果,若放到服务器上多线程模式速度会更快。

Done!!!

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

周界人员入侵预系统保障工厂生产安全

工厂生产车间区域不能有人闯入机器人生产区域,如果有人员闯入生产区域,周界人员入侵预警摄像机监测识别到有人进入,系统设备现场联动语音告警,提醒人员禁止进入,同时将告警抓拍的图像传输到厂区二楼监控室,监控室电脑报警弹窗,提醒管理人员监看,从而保障美的工厂车间安…

探秘Transformer系列之(10)--- 自注意力

从零开始解析Transformer,目标是:(1) 解析Transformer如何运作,以及为何如此运作,让新同学可以入门;(2) 力争融入一些比较新的或者有特色的论文或者理念,让老鸟也可以有所收获。探秘Transformer系列之(10)--- 自注意力 目录探秘Transformer系列之(10)--- 自注意力0x0…

【Azure Application Insights】配置 JMX 指标无法收集到参数的情况

问题描述 使用 Application Insights Java 3.x 收集 Java 管理扩展 (JMX) 指标, 根据文档在 applicationinsights.json 文件中添加 "jmxMetrics" 部分,并添加如下内容:"jmxMetrics": [{"name": "Demo - G1 Collection Count Young"…

ONE阅读,不只阅读

OneRead - ONE阅读是一个使用Flutter构建的集书籍、漫画、听书和视频资源为一体的手机APP。使用自定义源来解析对应的资源,以舒适的UI来展示数据。你可以在APP中阅读书籍,阅读漫画、听书以及观看视频;使用APP导入、查看、编辑源等。ONE阅读,不只阅读。 部分界面更多介绍 ON…

leetcode hot 21

解题思路:本题前面的思路和前一个相同,但是要找到对应的环开始的点,那就需要分析,结论就是:slow的指针继续走,同时一个从head出发的节点同时走,最后他们一定会在环开始点相遇。 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode …

jdk环境变量的配置以及class文件的生成

jdk的文件下载路径:https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows 搭建环境变量 path中添加下载好的jdk文件夹 第一种方法: public class frank_app{ public static void main(String[] args){ System.out.println("hello,world"); …

SEC+ | Performance Bsed Questions(PBQ)

share my study notes.(not officially) Cyberkraft/ elevtor to cyberkcaft 1.techinical operational managerial(总体策略)2.remediation:补救措施 inoperable:无法操作 FQDN full qualified domain name:完全限定域名 cert:证书p4 5.programmatic 程序化P5 6.p7本文来自…

leetcode hot 20

解题思路:快慢指针,一个一步一步走,一个两步两步走,如果有环,则一定会相遇;如果没环,那么快的指针一定会找到null。 /*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val = x;* …

市场的信任,卖家的信任和博弈

我把一辆自行车卖了,发在中国留学生群里,来看车的博士生总是挑毛病,问85元能不能再便宜,我发在facebook 不到24小时,就被老外110元买走了。中国人就是从小被坑惯了,只要一花钱就考虑是不是怕被坑了,总是怕被骗。 我跟他说这个车挂外网至少价值110,他就是不信,因为中国…

AI训练编程:仓库管理系统

我使用的是当前最火的AI豆包 以下是我输入的AI语句: 用spring boot为框架 java script,前端与后端分开,前端运用html,后端有controller ,services,mapper,pojo,生成一个仓储管理系统原型系统,WEB管理系统界面要求采用统一风格的模板,该系统支持多个仓库的设立,统一设…

我也不知取啥名

nginx-rewrite功能重定向:也叫url重定向,也叫url改写 未来需求:网站由http(80)---->https(443)http://www.baidu.com---->https://www.baidu.com根据用户客户端类型进行跳转如果用户客户端为ios、iPhone、Android,则访问m.www.baidu.com 否则:访问www.baidu.com新老…

为什么SINS机械编排中,姿态更新在速度更新和位置更新之后

无论是严恭敏老师的开源程序PSINS,还是牛小骥老师组开源的KF-GINS,在进行SINS机械编排时都是先更新速度和位置,再更新姿态,这是为什么呢? 可以从姿态、速度和位置更新的具体公式中看出其中缘由:进行姿态更新时需要通过平均位置和平均速度计算n系相对于i系的平均角速率(计…