首页 > 解决方案 > 如何确定 cassandra 中的逻辑/物理读写?

问题描述

我目前正在调查对 cassandra 的读写操作。我想知道 cassandra 对 memtable 和 sstable 执行的读写操作。cassandra 指标的最接近值是多少?我发现的只是延迟指标,但这不是我要寻找的。

我更想知道发生了多少次真正的读写来为一些特定的操作建立一个抽象的成本模型。

谢谢!

编辑:

所以看起来 ReadLatency 和 WriteLatency (Table Metrics) 是我一直在寻找的。但是,如果我想读取指标,则读取计数始终为 0。

我的设置:

我的电报配置:

  [[inputs.jolokia2_agent.metric]]
    name  = "TableRead"
    mbean = "org.apache.cassandra.metrics:keyspace=*,name=ReadLatency,scope=*,type=Table"
    tag_keys = ["keyspace", "name", "scope"]
    field_prefix = "$2_"

  [[inputs.jolokia2_agent.metric]]
    name  = "TableWrite"
    mbean = "org.apache.cassandra.metrics:keyspace=*,name=WriteLatency,scope=*,type=Table"
    tag_keys = ["keyspace", "name", "scope"]
    field_prefix = "$2_"

通过我的 Java 应用程序运行查询时,两者都在我的表上显示读取计数为零(写入计数器按预期递增),如下所示:

ResultSet rs = cqlSession.execute("SELECT * from myTable");
for(Row r : rs) {
    int id = rs.getObject("someColumn");
}

为什么读取计数器不增加?

标签: cassandranosqlcolumn-family

解决方案


Cassandra 中至少有两种类型的读/写指标:

  • 本地读/写 - 副本执行的相应操作
  • 客户端级别的读/写 - 这是如何在协调器级别发生的。协调器级别的一次读/写转换为由一致性级别和复制因子确定的 N 次本地读/写

Cassandra 的Metrics 页面提供了可用指标的列表,您可以获取特定于table的指标,或为协调器聚合- 您需要查看延迟指标,例如ReadLatency表或ClientRequests.Read协调器。

对于读取,还有其他重要指标,例如,在读取特定表期间命中的 SSTable 数量(命中的次数越多,延迟越差)、墓碑数量等。在主机级别 - 诸如键缓存命中率也很重要。DataStax 有一个关于“重要指标”的单独页面作为其最佳实践文档的一部分。


推荐阅读