基于flink维表join优化浅述

一、维表join基础操作

      在实际工作场景中,数据流处理往往需要与相关的维度数据进行关联操作。根据不同的业务场景和需求,合理选择相应的缓存策略至关重要,以确保数据处理的效率和准确性。

通用缓存策略详解

        在使用维表 Join 时,大部分连接器都支持缓存策略,但不同连接器对缓存策略的支持情况可能略有不同。因此,在使用缓存策略之前,请务必查阅对应连接器的官方文档,以确定具体的支持情况。以下是通用的缓存策略及其详细说明:

1. None(默认值):无缓存

描述:不使用任何缓存机制,每次查询都直接从物理维表中获取数据。

使用场景

  • 对数据准确性要求极高,无法容忍任何数据延迟或不准确的情况。

  • 维表数据更新频繁,实时性要求高。

优点

  • 数据实时性强,能够保证查询结果的准确性。

缺点

  • 当数据量较大时,Join 操作的性能压力会显著增加,容易导致反压。

  • 对维表数据库的查询压力较大,可能影响数据库性能。

2. LRU(Least Recently Used):缓存部分数据

描述:缓存维表中的部分数据。系统会根据最近使用情况维护一个缓存,源表的每条数据都会先在缓存中查找,如果未找到,则从物理维表中查询。

使用场景

  • 维表数据更新频率较低,可以容忍少量数据不准确的情况。

  • 对查询性能有一定要求,但对数据实时性要求不高。

优点

  • 提高 Join 操作的性能,减少对物理维表的查询次数。

  • 缓存机制可以有效缓解数据库的压力。

缺点

  • 当维表数据发生变化时,缓存中的部分数据可能会变得不准确。

  • 缓存大小有限,可能导致部分数据无法被缓存。

3. ALL:缓存全部数据

描述:缓存维表中的所有数据。在作业运行前,系统会将维表中的所有数据加载到缓存中,之后所有的维表查找操作都会通过缓存进行。如果在缓存中未找到数据,则认为该键不存在。全量缓存有一个过期时间,过期后会重新加载全量缓存。

使用场景

  • 适用于远程表数据量较小,且源表数据与维表 JOIN 时,ON 条件无法关联(MISS KEY)的情况较多。

  • 对查询性能要求极高,且可以接受全量数据加载的延迟。

优点

  • 提供最高的查询性能,因为所有数据都在缓存中。

  • 减少了对物理维表的查询,降低了数据库的压力。

缺点

  • 缓存占用内存较大,可能需要较多的资源。

  • 数据更新后,需要等待缓存过期或手动刷新缓存,可能存在短暂的数据不一致。

        目前维表关联伪代码如下:<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值