如何计算Cassandra分区大小?(含指定表结构与数据场景)
Cassandra分区大小计算(100万行无普通列)
给定表结构:
CREATE TABLE IF NOT EXISTS video (key int, value int, PRIMARY KEY (key, value));
其中分区键为key,聚类键为value,无常规列,分区内包含1000000行数据,以下是分区大小的近似计算:
未压缩大小(近似值)
Cassandra的分区存储包含两部分核心开销:分区级元数据、每行的聚类键及行元数据。
- 分区级固定开销:
- 分区键(
key为int类型):4字节 - 分区头元数据(包括索引标记、分区摘要等):约32字节
- 合计:36字节(相对于百万行数据可忽略)
- 分区键(
- 单条聚类行的开销:
- 聚类键(
value为int类型):4字节 - 时间戳(Cassandra默认自动添加):8字节
- 行控制元数据(无删除/TTL时的标记位、列计数标记):约2字节
- 单条行合计:14字节
- 聚类键(
- 总未压缩大小:
1000000行 × 14字节/行 + 36字节 ≈ 14MB
压缩后大小(近似值)
Cassandra默认使用LZ4压缩算法,针对这类重复度较高的整数数据,压缩比通常在2~4倍之间,因此压缩后的分区大小约为3.5MB ~ 7MB。
注:实际大小可能因Cassandra版本、存储引擎配置(如是否启用行缓存、索引策略)略有差异,但以上为通用场景下的合理估算。
内容的提问来源于stack exchange,提问作者Sahil Ummer
相关产品推荐
相关产品推荐

