cassandra - 如何确定 cassandra 中的逻辑/物理读写?
问题描述
我目前正在调查对 cassandra 的读写操作。我想知道 cassandra 对 memtable 和 sstable 执行的读写操作。cassandra 指标的最接近值是多少?我发现的只是延迟指标,但这不是我要寻找的。
我更想知道发生了多少次真正的读写来为一些特定的操作建立一个抽象的成本模型。
谢谢!
编辑:
所以看起来 ReadLatency 和 WriteLatency (Table Metrics) 是我一直在寻找的。但是,如果我想读取指标,则读取计数始终为 0。
我的设置:
- 流行音乐!20.04 / 联想 P1 G2(512GB nvme SSD,16GB 内存)
- Cassandra 3.11.7(Docker 容器)
- Datastax 4.5.1 Java 驱动程序
- 通过 Nodetools(一直在使用 docker 容器内的可执行文件)或 Telegraf 1.15.2 + Jolokina 1.6.2 收集指标
我的电报配置:
[[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");
}
为什么读取计数器不增加?
解决方案
Cassandra 中至少有两种类型的读/写指标:
- 本地读/写 - 副本执行的相应操作
- 客户端级别的读/写 - 这是如何在协调器级别发生的。协调器级别的一次读/写转换为由一致性级别和复制因子确定的 N 次本地读/写
Cassandra 的Metrics 页面提供了可用指标的列表,您可以获取特定于table的指标,或为协调器聚合- 您需要查看延迟指标,例如ReadLatency
表或ClientRequests.Read
协调器。
对于读取,还有其他重要指标,例如,在读取特定表期间命中的 SSTable 数量(命中的次数越多,延迟越差)、墓碑数量等。在主机级别 - 诸如键缓存命中率也很重要。DataStax 有一个关于“重要指标”的单独页面作为其最佳实践文档的一部分。
推荐阅读
- python - 已解决:在 volatile 设置中向 ORM SQLAlchemy 表添加新列
- javascript - Unexpected SyntaxError:输入意外结束
- reactjs - react-select:当您没有搜索选项时自动建议“其他”选项
- javascript - 为什么我的嵌套等待函数没有等待
- visual-studio-code - (tasks.json)我不知道如何使用 WSL 作为 shell 来使用转义字符
- reactjs - 如何链接到 Shopify 嵌入式应用程序中的另一个页面?
- python-3.x - 有没有更好的方法来运行 Jupyter Notebook?
- java - 为启用 IPV6 和 HTTPS 的服务器构建 RestEasy WebTarget
- jupyter-lab - Kusto 查询语言 (KQL) 魔术和查询期间的 Jupyter Lab 连接错误
- html - 在vsc的html中,我把我的电脑图片文件的路径放在了img标签里。但不起作用