在更新memtable时,基于lsm树的dbs如何处理并发性

0wi1tuuw  于 2021-06-09  发布在  Cassandra
关注(0)|答案(1)|浏览(449)

在读了几篇博客中关于lsm树的文章后,我想知道,当同时接收到几个插入值的请求时,实际的实现如何处理内存中的并发性,这些请求会修改memtable的内存结构。
在memtable中插入一个值时(大多数似乎表示是一棵树)
它如何同时处理多个插入请求?
它如何处理读/写竞争?
它是否使用简单的r/w锁定机制?

aelbi1ox

aelbi1ox1#

在cassandra中,具有最新时间戳的突变获胜,因此它可以处理数千次并发插入,而且不需要竞争,也不需要锁。
sstables是不可变的——一旦写入磁盘,它们就永远不会改变。但是数据可以由压缩线程重写,压缩线程根据表上定义的压缩策略将sstables合并到新的sstable中。干杯!

相关问题