限制 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 的写速度的主要内容,如果未能解决你的问题,请参考以下文章