当前位置: 首页 > news >正文

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

场景:假如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!!!

相关文章:

  • 自学微信小程序的第十二天
  • 【不是广告】华为昇腾的一小步,Pytorch的一大步
  • Django模型数据查询:深入探索模型管理器Model.objects
  • Linux+apache之 浏览器访问云服务器磁盘的图片,通过tomcat
  • 浅浅认识一下js中的闭包
  • 聊天室Python脚本——ChatGPT,好用
  • 通用信息抽取大模型PP-UIE开源发布,强化零样本学习与长文本抽取能力,全面适配多场景任务
  • Leetcode 378-有序矩阵中第 K 小的元素
  • Linux安装Redis、远程连接Redis
  • Python使用SFTP批量上传和下载一个目录下的所有文件
  • flink tranform算子详解
  • 从厨电模范到数字先锋,看永洪科技如何助力方太集团开启数字新征程
  • 写一个python程序,找出1000以内的质数
  • c++ 接口/多态
  • 【开源免费】基于SpringBoot+Vue.JS疫情管理系统(JAVA毕业设计)
  • Java Web 相关技术概念与知识点
  • [MySQL初阶]MySQL(2)数据类型精讲静态类型和动态类型的对比
  • ubuntu20系统下conda虚拟环境下安装文件存储位置
  • 大模型在呼吸衰竭预测及围手术期方案制定中的应用研究
  • JVM如何判断一个对象可以被回收
  • 赤峰网站制作公司/seo关键词排名系统
  • 做网站收费/五合一网站建设
  • 北京靠谱的网站公司/佛山旺道seo
  • b2c网站制作/多合一seo插件破解版
  • 郑州网站建设 58/百度营销登录
  • 做服装团购有哪些网站/自助建站