我在启用跟踪的情况下进行选择,并看到:
Skipped 0/1 non-slice-intersecting sstables included 0 due to tombstones [ReadStage-<N>]
那么,忽视墓碑是否有效呢?跟踪:
Read 0 live rows and 2 tombstone cells
很明显:它正在读墓碑
o75abkj41#
假设有一个a列。您在a列中添加了值x。然后删除了a列。cassandra不会立即删除值x,而是为列a添加一个称为tombstone的标记。墓碑本身也是一个单独的记录,就像原始值x一样。假设这两个更新是在不同的sstable(cassandra存储)中编写的。现在,当您读取值时,cassandra将获得值x和列a的墓碑。它将看到tombstone写在值x之后,因此它不会返回任何值。由于逻辑删除,跳过了0/1个非切片相交的SS0表这基本上证实了这一点。
ht4b089n2#
根据与一些Cassandra管理人员的谈话:“跳过sstables是cassandra告诉我们它有效地消除了墓碑,这没关系一般来说,删除分区中的所有内容有助于确保cassandra不会陷入墓碑的泥潭
2条答案
按热度按时间o75abkj41#
假设有一个a列。
您在a列中添加了值x。
然后删除了a列。
cassandra不会立即删除值x,而是为列a添加一个称为tombstone的标记。墓碑本身也是一个单独的记录,就像原始值x一样。
假设这两个更新是在不同的sstable(cassandra存储)中编写的。
现在,当您读取值时,cassandra将获得值x和列a的墓碑。它将看到tombstone写在值x之后,因此它不会返回任何值。
由于逻辑删除,跳过了0/1个非切片相交的SS0表
这基本上证实了这一点。
ht4b089n2#
根据与一些Cassandra管理人员的谈话:
“跳过sstables是cassandra告诉我们它有效地消除了墓碑,这没关系
一般来说,删除分区中的所有内容有助于确保cassandra不会陷入墓碑的泥潭