一、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再调用存储过程来处理后续的操