kettle插件-高性能插入更新插件Upsert
1.kettle从入门到精通 第五十一课 ETL之kettle Avro input2.kettle从入门到精通 第五十二课 ETL之kettle Avro output3.kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战4.kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ consumer实战5.Kettle调优教程(推荐收藏)6.kettle从入门到精通 第五十五课 ETL之kettle Excel输入7.kettle从入门到精通 第五十六课 ETL之kettle Microsoft Excel Output8.kettle从入门到精通 第五十八课 ETL之kettle HTTP post使用教程9.kettle从入门到精通 第五十九课 ETL之kettle 邮件发送多个附件,使用正则轻松解决10.kettle从入门到精通 第六十课 ETL之kettle for循环处理每条数据,so easy!11.kettle从入门到精通 第六十三课 ETL之kettle kettle调用python脚本的两种方法12.kettle从入门到精通 第六十四课 ETL之kettle kettle中执行SQL脚本步骤,使用需当心13.kettle从入门到精通 第六十五课 ETL之kettle 执行动态SQL语句,轻松实现全量&增量数据同步14.kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy15.kettle从入门到精通 第六十七课 ETL之kettle 再谈kettle阻塞,阻塞多个分支的多个步骤16.kettle从入门到精通 第六十八课 ETL之kettle kettle随机数生成的一些方案17.kettle从入门到精通 第六十九课 ETL之kettle kettle cdc mysql,轻松实现实时增量同步18.kettle从入门到精通 第七十课 ETL之kettle kettle数据校验,脏数据清洗轻松拿捏19.kettle从入门到精通 第七十一课 ETL之kettle 再谈http post,轻松掌握body中传递json参数20.kettle从入门到精通 第七十二课 ETL之kettle 三谈http post(含文件上传),彻底掌握参数传递21.kettle从入门到精通 第七十三课 ETL之kettle kettle调用http分页接口教程22.kettle从入门到精通 第七十四课 ETL之kettle kettle调用https接口教程,忽略SSL校验23.kettle从入门到精通 第七十五课 ETL之kettle血缘,数据血缘24.kettle从入门到精通 第七十六课 ETL之kettle kettle连接hive教程25.kettle从入门到精通 第七十七课 ETL之kettle kettle执行存储过程,接收数据集26.kettle从入门到精通 第七十八课 ETL之kettle kettle将文件写入数据库BLOB字段27.kettle从入门到精通 第七十九课 ETL之kettle kettle读取数据库BLOB字段转换为文件28.kettle从入门到精通 第八十课 ETL之kettle kettle中的json对象字段写入postgresql中的json字段29.kettle从入门到精通 第八十一课 ETL之kettle kettle中的json对象字段写入postgresql中的json字段正确姿势30.kettle从入门到精通 第八十二课 ETL之kettle kettle中的【阻塞数据直到步骤都完成】使用教程31.kettle从入门到精通 第八十三课 ETL之kettle kettle调用python且接收返回值32.kettle从入门到精通 第八十四课 ETL之kettle kettle中Get data from XML使用实战教程33.kettle从入门到精通 第八十五课 ETL之kettle kettle中javascript步骤调用外部javascript/js文件34.kettle从入门到精通 第八十六课 ETL之kettle kettle调用https接口忽略SSL校验35.kettle从入门到精通 第八十七课 ETL之kettle kettle文件上传36.kettle从入门到精通 第八十八课 ETL之kettle kettle连接sqlserver彻底搞明白37.kettle从入门到精通 第八十九课 ETL之kettle kettle jms activemq使用教程38.ETL之kettle 医疗行业高级陪伴群 第一课39.ETL之kettle 专业陪伴群,1元开启kettle精进之旅40.ETL之kettle版本安装包免费下载地址41.kettle从入门到精通 第九十二课 ETL之kettle 使用Kettle的Carte对外发布读写接口42.kettle调度管理系统XXK-PDI,kettle调度好帮手43.kettle插件-自定义函数-数据脱敏44.kettle插件-git/svn版本管理插件
45.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!!!
合集:
kettle
« 上一篇: kettle插件-git/svn版本管理插件
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架