【问题标题】:How can I get a row count in Cassandra with only CQL?如何仅使用 CQL 在 Cassandra 中获取行数?
【发布时间】:2016-06-10 09:42:36
【问题描述】:

我希望我们的开发人员能够知道一个表中有多少行(大致)。

“从表中选择计数 (*)”不起作用,因为您会收到超时错误,除非表非常小(低于一百万行)。

增加 ~/.cassandra/cqlshrc 中的 client_timeout 对我们来说从来没有用过,即使这样做了,让开发人员针对生产运行 10 分钟查询可能也不是一个好主意。 :)

由于这是一个生产集群,开发人员没有 ssh 访问服务器以在服务器上本地运行“nodetool”。

远程运行“nodetool”需要启用远程 JMX 并应用 JMX 安全性。这似乎有点多,只是为了估计一张桌子的大小。有人可以使用该 JMX 访问做任何危险的事情吗?

是否有任何其他选项可以估算表中的行数?

谢谢!

【问题讨论】:

    标签: cassandra


    【解决方案1】:

    您可以尝试将表格导出到 csv,然后只计算 csv 的行数。这在性能方面并不理想,但不会像 count 那样超时。

    COPY table_name TO filename_or_path.csv;
    

    有关副本的更多信息,请参阅:http://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html

    如果您正在运行 datastax cassandra,另一个更“估计”的选项是将 OpsCenter 安装到其中一个节点上,这将创建一个 UI,您可以向开发人员公开该 UI,该 UI 具有许多有用的指标和健康状态。我不认为它直接有数字或行,但如果你知道这个值,它确实有可以除以平均行大小的数据量。

    http://www.datastax.com/products/datastax-enterprise-visual-admin

    *编辑:我刚刚意识到上面的链接是针对 OpsCenter 企业版的,但确实包含了它的描述。也有(或至少有)一个社区版本。

    【讨论】:

    • O__O 我不知道为什么我没想到!谢谢! :)
    猜你喜欢
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2021-11-03
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多