Cassandra中带TTL的多列数据开销如何工作?
How does the data overhead of multiple columns with TTL in Cassandra work?
在 Cassandra (here) 的过期数据文档中提到
Expiring data has an additional overhead of 8 bytes in memory and on disk (to record the TTL and expiration time) compared to standard data.
如果在 table 级别上设置 TTL(生存时间),这是否意味着对于每个数据条目,内存和磁盘上的开销要多 8 个字节乘以列数,还是独立于列数?
例如,在文档中还可以找到用于确定列的 TTL 的示例 here,即使数据被插入超过 1 列并且 TTL 是为插入的实际数据条目定义的,而不是基于每列。
根据 Cassandra documentation,在创建 table 部分它说:
default_time_to_live
TTL (Time To Live) in seconds, where zero is
disabled. When specified, the value is set for the Time To Live (TTL)
marker on each column in the table; default value: 0. When the table
TTL is exceeded, the table is tombstoned.
意思是当你为table定义一个TTL时,它对每一列都有效(主键除外)。
不,至少不再是了。该文档已过时,仅与 3.0 之前相关。
目前,如果分区中的所有列或分区中的行在插入时设置了相同的 TTL,则只需为其设置一次。如果它们被存储,它们将从 sstables minTimestamp 写入增量编码作为无符号变量 int,而不是 8 个字节。
在 Cassandra (here) 的过期数据文档中提到
Expiring data has an additional overhead of 8 bytes in memory and on disk (to record the TTL and expiration time) compared to standard data.
如果在 table 级别上设置 TTL(生存时间),这是否意味着对于每个数据条目,内存和磁盘上的开销要多 8 个字节乘以列数,还是独立于列数?
例如,在文档中还可以找到用于确定列的 TTL 的示例 here,即使数据被插入超过 1 列并且 TTL 是为插入的实际数据条目定义的,而不是基于每列。
根据 Cassandra documentation,在创建 table 部分它说:
default_time_to_live
TTL (Time To Live) in seconds, where zero is disabled. When specified, the value is set for the Time To Live (TTL) marker on each column in the table; default value: 0. When the table TTL is exceeded, the table is tombstoned.
意思是当你为table定义一个TTL时,它对每一列都有效(主键除外)。
不,至少不再是了。该文档已过时,仅与 3.0 之前相关。
目前,如果分区中的所有列或分区中的行在插入时设置了相同的 TTL,则只需为其设置一次。如果它们被存储,它们将从 sstables minTimestamp 写入增量编码作为无符号变量 int,而不是 8 个字节。