你能帮我理解一下,时间窗口是如何在TWCS中定义的吗
例如
我正在将compaction_window_size属性更新为1 天
起点和终点是什么时候?
每天 00:00 还是我设置compaction_window_size 的时间?
您是否遇到过这样的情况,即您为避免多个主要压缩同时运行而安排的时间窗口?
你能帮我理解一下,时间窗口是如何在TWCS中定义的吗
例如
我正在将compaction_window_size属性更新为1 天
起点和终点是什么时候?
每天 00:00 还是我设置compaction_window_size 的时间?
您是否遇到过这样的情况,即您为避免多个主要压缩同时运行而安排的时间窗口?
这是一个很好的问题,而且并不明显——我无法在任何地方找到它的明确记录。查看代码 - 当它在当前窗口上选择要压缩的文件作为 STCS 时,它会遍历文件并转换 sstable 的最大时间戳并将其舍入到时间窗口。功能在这里。
这实际上将 SSTables 存储起来,将作为 STCS 进行处理——关于哪个存储桶是 STCS 还是 TWCS 的决定在代码的后面。
从本质上讲,这似乎与从当前窗口的 STCS 到时间分辨率边界上的历史窗口的 TWCS 的变化保持一致——其确切逻辑是:
因此,它实质上将进行更粗粒度的时间转换,对于 1 天的窗口,我希望它将午夜以后的任何文件视为当前窗口内的任何文件,因为更粗的转换将被截断,因此将作为 STCS 运行。
对于更深奥的窗口,数学是一个简单的除法,它会产生一个纪元的基础(例如,如果时间窗口是 3 天,哪 3 天?它将基于一个文件在哪个桶中的数学从纪元开始)