低优先级写

用户有时需要做大量的后台编写。一个例子是他们想要加载大量的数据。另一个是他们想做一些数据迁移。

处理这些情况的最佳方法是创建和摄取SST文件。但是,在某些用例中,用户不能批量加载数据,必须直接连续地将数据写入数据库。 当这样做的时候,他们可能会遇到这样的问题:如果他们尽可能快地发出后台写操作,这将触发DB的节流机制(请参阅Write stall), 它不仅会减慢后台写操作的速度,还会减慢用户的在线查询。

低优先级写可以帮助用户管理这样的用例。从5.6版开始,用户可以设置WriteOptions.low_pri=true用于后台写入。 RocksDB将对低优先级写操作进行更积极的节流,以确保高优先级写操作不会停止。

当DB运行时,RocksDB将通过查看未完成的L0文件和未执行的压缩字节来评估是否有压缩压力。如果RocksDB认为存在压缩压力, 它就会对低优先级写采用人工休眠,从而使低优先级写的总速率很小。通过这样做,总写速率将比总体写节流条件下降得更早,因此更有可能保证高优先级写服务的质量。

在两阶段提交中,低优先级写操作的放缓是在准备阶段而不是提交阶段完成的。