我最近开始了解和使用 cassandra。
我创建了两个列系列。对于 CF1,写入是将包含所有列值的唯一行插入。例如:插入操作的顺序可能如下:
Key Col1 Col2 Col3
k1 c11 c12 c13
k2 c21 c22 c23
对于 CF2,写入是将数据插入到带有时间戳的行列中。例如:插入操作的顺序可能是这样的:
Key timeCol1 timeCol2
k1 ct11
k1 ct11 ct12
k2 ct21
k2 ct21 ct22
我正在使用 YCSB 并使用基于 thrift 的客户端.batch_mutate()调用。对于 CF1,我通过调用发送一行的所有列值。对于 CF2,我发送一行的新列值。
现在假设 opscenter 报告“写入请求”为 1000运营当记录数为 10000 条记录时,每秒。
从 opscenter 的角度来看,操作意味着什么?它是否意味着在所有列族中插入唯一行?它是否意味着一行中每个突变的计数?opscenter 如何识别唯一操作?从应用程序的角度来看,操作对于两个列族的意义不同。
有人可以指导我吗?
谢谢,阿伦
答案1
“写入请求”和“读取请求”指标表示来自外部客户端的操作数,因此单个 batch_mutate 调用就是 1 个请求,无论它包含多少个突变。
“CF:本地写入”和“CF:本地读取”指标表示本地节点(通常来自协调器节点)收到的操作数。对于单个插入,“CF:本地写入”的数量等于该键空间的“写入请求”x RF。对于 batch_mutate 调用,批次内的每个变更在“CF:本地写入”级别单独计算。
这些操作仅在行级别,并且不存在任何基于所涉及数据的智能处理/合并。例如,运行相同的更新查询两次将产生 2 个操作。