cassandra 中的分区大小究竟是多少?

时间:2021-04-21 17:20:19

标签: cassandra cassandra-3.0

我是 Cassandra 的新手,我有一个有 6 个节点的 cassandra 集群。我正在尝试查找分区大小,

尝试使用这个基本命令获取它

<块引用>

nodetool tablehistograms keyspace.tablename

enter image description here

现在,我想知道它是如何计算的,为什么结果只有 min、max 以外的 5 条记录,而节点数是 6。节点大小和表的分区数有关系吗?

>

从根本上说,我所知道的是分区键用于散列和分发要跨各个节点持久化的数据

我们应该在什么时候进行分桶?我假设 Cassandra 有一个分区器来处理跨节点的分布式持久性。

2 个答案:

答案 0 :(得分:1)

此列的条目数与节点数无关。它显示了值的分布 - 您有 min、max 和 percentiles (50/75/95/98/99)。

大多数 nodetool 命令不显示其他节点的任何信息 - 它们是仅提供有关当前节点信息的工具。

附言此 document 将有助于解释如何解释此信息。

答案 1 :(得分:1)

顾名思义,tablehistograms 报告节点所持有分区的元数据分布。

为了补充 Alex Ott 已经说过的内容,百分位数(不是百分比)提供了对元数据值范围的洞察。例如:

  • 给定表的 50% 的分区大小不超过 74KB
  • 95% 为 263KB 或更少
  • 98% 为 455KB 或更少

这些元数据与集群中的分区数量或节点数量没有任何关联。

您是正确的,分区键被散列,结果值决定了分区(及其相关行)的存储位置(分布在集群中的节点之间)。如果您有兴趣,我在这篇博文中用一些示例进行了更详细的解释 -- https://community.datastax.com/questions/5944/

就分桶而言,您通常会这样做以减少分区中的行数,从而减小其大小。一般建议是将您的分区大小保持在 100MB 以下以获得最佳性能,但这不是硬性规定 - 只要您了解权衡,您可以拥有更大的分区。

在你的情况下,larges 分区只有 455KB,所以大小不是问题。干杯!