在压缩过程中,如果我们有两个或更多版本的同一行,Cassandra只会将最新版本写入新的SSTable。 在读取过程中,如果一行在SSTable上有多个版本,则进行比较。
1.当行仅处于memtable状态(尚未刷新)时,是否会发生同样的事情? 2. Cassandra如何处理尚未刷新到SSTable的行的多个更新。 3.从memtable vs SSTables读取记录(有多个版本)对性能有影响吗? 4.我有一个应用程序仅在其输入的前5分钟内频繁更新一行(10次)的情况。当行处于memtable(尚未刷新)时,可能会发生这种情况。处理这个问题的首选方法是什么?
抱歉有多个问题。
答案 0 :(得分:0)
答案 1 :(得分:0)
要获得答案,您需要了解Cassandra如何读取和写入数据。请仔细阅读此链接以查找详细信息。How Cassandra reads and writes data
1.当行仅在memtable中(尚未刷新)时,会发生同样的事情吗?
<强> 号。它会在更新相同密钥时替换现有值。
2. Cassandra如何处理尚未刷新到SSTable的行的多个更新。
When a write occurs, Cassandra stores the data in a memory structure called memtable, and to provide configurable durability, it also appends writes to the commit log on disk. The commit log receives every write made to a Cassandra node, and these durable writes survive permanently even if power fails on a node. The memtable is a write-back cache of data partitions that Cassandra looks up by key. The memtable stores writes in sorted order until reaching a configurable limit, and then is flushed.
3.从memtable vs SSTables读取记录(包含多个版本)对性能有任何影响吗?
很明显,memtable访问比多版本sstable访问更快
4.我有一个应用程序仅在其输入的前5分钟内频繁更新一行(10次)的情况。当行处于memtable(尚未刷新)时,可能会发生这种情况。处理这个问题的首选方法是什么?
如果您启用行缓存会更好。您还可以增加memtable
和commit log
大小以获得最佳效果。