限制 TerichDB 的写速度

Posted Terark-CTO-雷鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了限制 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



以上是关于限制 TerichDB 的写速度的主要内容,如果未能解决你的问题,请参考以下文章

第三期 行为预测——速度惩罚的代价函数

TerichDB架构简介

TerichDB架构简介

集成 TerichDB 的 MongoDB 性能测试

集成 TerichDB 的 MongoDB 性能测试

集成TerichDB的SSDB性能测试