Hi jiafu
RocksDB 刷磁盘是它自己负责的(writebuffer 满了,就会 flush 到磁盘,具体的可以看下 RocksDB 的文档),另外在
snapshot 的时候会 flush 一次 writebuffer 来保证一致性。
你上面截图的是 Flink 中 wrapper 的一个 write batch 操作,这个方法的含义是,积攒一批 操作 再去写
rocksdb,和 rocksdb 刷磁盘还不是一回事。
Best,
Congxian
jun su <[email protected]> 于2020年7月31日周五 下午4:57写道:
> hi,
>
> 看到 RocksDBWriteBatchWrapper类有 flushIfNeeded()方法 , 是这个么?
>
> private void flushIfNeeded() throws RocksDBException {
> boolean needFlush = batch.count() == capacity || (batchSize > 0 &&
> getDataSize() >= batchSize);
> if (needFlush) {
> flush();
> }
> }
>
> batchSize 来自 state.backend.rocksdb.write-batch-size 参数的配置
>
> jiafu <[email protected]> 于2020年7月31日周五 下午4:41写道:
>
> >
> >
> writerbuffer写满会flush到磁盘,checkpoint启动的时候会有一次snapshot过程,会让rocksdb做checkpoint,然后将数据刷到磁盘形成sst文件。
> >
> >
> >
> >
> > ------------------ 原始邮件 ------------------
> > 发件人:
> > "user-zh"
> > <
> > [email protected]>;
> > 发送时间: 2020年7月31日(星期五) 下午4:37
> > 收件人: "user-zh"<[email protected]>;
> >
> > 主题: RocksDBKeyedStateBackend如何写磁盘
> >
> >
> >
> > hi all,
> >
> > 请问RocksDBKeyedStateBackend是何时将state序列化到磁盘的, 窗口结束时间?还是配置的checkpoint周期,谢谢
> >
> > --
> > Best,
> > Jun Su
>
>
>
> --
> Best,
> Jun Su
>