Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉在读墓碑吗?这个痕迹是什么意思?_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉在读墓碑吗?这个痕迹是什么意思?

Cassandra 卡桑德拉在读墓碑吗?这个痕迹是什么意思?,cassandra,Cassandra,我在启用跟踪的情况下进行选择,并查看: Skipped 0/1 non-slice-intersecting sstables included 0 due to tombstones [ReadStage-<N>] 很清楚:它正在读墓碑假设有一列a 将值x添加到列A 然后删除了A列 Cassandra不会立即删除值x,而是为a列添加一个标记,称为墓碑。墓碑本身也是一个单独的记录,就像原始值x一样 假设这两个更新是在不同的SSTABLE(Cassandra存储)中编写的 现在,当您

我在启用跟踪的情况下进行选择,并查看:

Skipped 0/1 non-slice-intersecting sstables
included 0 due to tombstones [ReadStage-<N>]

很清楚:它正在读墓碑

假设有一列a

  • 将值x添加到列A
  • 然后删除了A列
  • Cassandra不会立即删除值x,而是为a列添加一个标记,称为墓碑。墓碑本身也是一个单独的记录,就像原始值x一样

    假设这两个更新是在不同的SSTABLE(Cassandra存储)中编写的

    现在,当您读取值时,Cassandra将获得值x和列A的墓碑。它将看到墓碑写在值x之后,因此不会返回任何值

    跳过了0/1个非切片相交的SSP表 由于墓碑而包括0


    这基本上证实了这一点。

    根据与一些Cassandra管理员的交谈:

    “跳过sstables是Cassandra告诉我们它有效地消除了墓碑,这没关系


    “删除分区中的所有内容通常有助于确保Cassandra不会陷入墓碑泥潭

    Cassandra在删除数据时使用“墓碑”标记,因为删除需要在网络上分发。考虑这种情况:我们试图对存在于六个商店的记录执行删除操作,然后其中一个“删除”操作失败。系统无法很容易地判断一条剩余记录是否是失败的删除,因此它可能认为该记录是有效数据并重新分发它。墓碑标志着记录正在被删除,直到所有副本都消失,然后墓碑被删除。这是正常的。对于Cassandra,所有记录都是不可变的,没有
    为列a添加标记,该列称为墓碑。
    。相反,C*将创建一个带有墓碑标记和较新时间戳的新记录。当发出一个查询时,引擎将找到2条记录(一条在创建时,第二条在删除时),并根据最新的时间戳决定该记录的当前状态。我所说的标记是指一条新记录,但也许我可以让语言更清楚。感谢您指出,“删除分区中的所有内容通常有助于确保Cassandra不会陷入墓碑困境”,即使删除分区,也会创建墓碑。
    Read 0 live rows and 2 tombstone cells