限制 TerichDB 的写速度

TerichDB 在保持超高压缩率的同时还有非常高的读性能,为此付出的代价是“压缩速度”,如果在短时间内写入大量数据,因为压缩速度慢,会导致 TerichDB 产生过多的 Frozen WritableSegment,进而影响读性能。


新版 TerichDB 增加了对写速度的限制(下称限流),从而解决该问题。默认情况下,没有限流,需要通过 dbmeta.json 设置限流:

{
 ....
  "WriteThrottleBytesPerSecond":  "2MB",
 ....
}

设置限流之后,写数据过快时,会阻塞用户线程,为此,我们增加了一个设置:

DbTablePtr dbtab = DbTable::open(...);
dbtab->setThrowOnThrottle(true);

现在,当限流发生时,会抛出一个异常,用户程序需要捕获该异常,然后可以做一些其他事情(可能需要 sleep):

try {
    dbtab->upsertRow(...);
}
catch (const WriteThrottleException& ex) {
   // do something else
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值