缓存机制以及清理——kettle开发07

一、kettle的缓存机制

1、什么是缓存

缓存就是数据交换的缓冲区(又称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,找到了则直接执行,找不到的话则从内存中查找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。

从上面缓存的介绍我们可以知道,缓存是个中间区类似于高速公路,因为电脑CPU是优先访问缓存,因此,缓存在性能上表现肯定是比较优秀的,因此我们该怎么用好缓存呢?

2、kettle中缓存来源

2.1 DB连接
当我们在一个转换中建立好数据连接后,需要让其他转换也能访问使用这个DB连接,此时我们需要将DB连接进行共享,如图所示DB连接共享后就会默认加粗了。 

2.2表输入、连接等组件
kettle中的表输入、EXCEL输入,当转换被调用时,表输入和EXCEL输入这些查询数据都会保存至内存中作为缓存,传输给表输出、EXCEL输出等。同样当我们合并记录时,kettle也是将不同数据保存至缓存中,将合并的记录也保存至缓存中,此时如果我们将百万或者上亿级别的数据进行,数据的排序、分组、合并等,容易造成内存溢出。

二、kettle缓存问题处理


1、当更改kettleDB连接,或者大批量的运行批处理作业后,发现作业均在2秒内完成执行了,此时是因为缓存中有错误的数据,导致缓存不能被读取,此时需要清除缓存后才行使用。

2、前面说到通过kettle组件进行大批量的数据排序、分组、合并处理时易导致内存溢出,因此这些操作建议采用SQ进行处理,如果不行可以考虑采用存储过程过程,kettle再调用存储过程来处理后续的操作。

3、建议自动清理组件,定时清理kettle缓存,防范于未然。1、

1、问题现象

1、kettle不能重启,每次重启都会闪退

2、kettle的定时任务可以运行,但是不会执行里面的程序

3、kettle定时任务脚本日志报错为,Unable to create the database cache

2、原因分析

        我们正常安装好kettle后会在c盘的用户下生成.kettle的文件夹,这里面的db.cache-5.4.0.1-130即1-130类型的文件就是保存了对应的缓存数据,主要包括共享数据库链接数据及转换和作业更新的缓存数据。

kettle启动和定时任务启动都会先读取缓存加快加载速度,但是这也经常造成kettle程序不能运行,定时任务运行失败。(其实亲测缓存对应用没多大的增益,可以删除该文件。但运行一段时间后会自动生成。)

 3、解决方法论

1、出现问题时手工删除对应的1-130文件,再重新启动kettle即可。

2、创建bat文件,定时删除对应1-130文件,自动清理缓存。对应bat文件脚本如下。

Forfiles /p C:\Users\Administrator\.kettle /s  /m db.cache-5.4.0.1-130 /c "cmd /c del /q /f @path"

大家可以参考Forfiles的语法。
 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙漏无语

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值