Hi

只是配置state.backend.rocksdb.ttl.compaction.filter.enabled 还需要相关的state 
descriptor也配置上state ttl config,不确定这里所谓的“不理想”的效果是没有及时删除,还是彻底没有删除?

目前RocksDB的后台清理确实需要依赖于compaction的执行,换言之,如果有部分数据一直没有进入compaction,确实存在理论上的可能性一直不会因为过期而删除,但是这个可能性很低不应该对你的使用体验带来很大的影响。

现在的这两种策略是更新时间戳的策略,只要不再访问,到时间都会因为TTL而自动后台清除的。

定时任务去清除过期state这种思路相比目前的实现会影响性能,而且还需要谨慎的一点是目前Flink的访问模式都是单线程的,要避免多线程同时访问。



祝好
唐云

​
________________________________
From: yanggang_it_job <[email protected]>
Sent: Friday, April 3, 2020 11:14
To: [email protected] <[email protected]>
Subject: 关于使用RocksDBStateBackend TTL 配置的问题

Hi:
   
我们现在启用state.backend.rocksdb.ttl.compaction.filter.enabled进行rocksdb的有效期设置,但效果并不是那么理想。
   同时我也有以下问题想不明白:
   1、如果rocksdb在compact的时候有些state并没有被compact到,是否就意味着就算这些state已经过期也不会被删除?
   2、目前flink的ttl策略只有OnCreateAndWrite和OnReadAndWrite两种策略,是否有那种不需要刷新,到了TTL时间就自动清除。
         否则就会出现state一直在刷新导致永远无法删除,最终导致磁盘打满


   目前我能想到的方案是,另外写一个定时任务根据配置去清除过期state。
   请问大家还有其他更好的方案吗?

回复