为什么我在 Cassandra 中递增计数器时会看到 'reads'?
Why am I seeing 'reads' when incrementing a counter in Cassandra?
我正在使用 Cassandra 来保存我们需要处理的一些分析的计数器字段。
我注意到对于给定的写入事件(其中一堆计数器递增),似乎有一个 'read' 操作。这意味着读取在等待 'write' 操作完成时排队。
我的理解是不应该有读取,每个事务只有计数器递增写入。
一些附加信息:
- 我正在使用 Seestar(Erlang Cassandra 驱动程序)
- 增量是通过执行准备好的语句来完成的。准备好的语句被缓存,不会每次都重新准备。
- 语句未调用'async'。
- 我们正在使用 Cassandra v2。0.x
Nodetool的输出显示每3次写入大约有1次读取。
请注意,当我在单节点集群中进行本地测试时,读取为零 - 所以这只是发生在我们的生产环境中。
实际上有一个读取涉及递增计数器。这篇文章很好地描述了 pre 2.1 和 2.1 中的计数器:http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-1-a-better-implementation-of-counters
我正在使用 Cassandra 来保存我们需要处理的一些分析的计数器字段。
我注意到对于给定的写入事件(其中一堆计数器递增),似乎有一个 'read' 操作。这意味着读取在等待 'write' 操作完成时排队。
我的理解是不应该有读取,每个事务只有计数器递增写入。
一些附加信息:
- 我正在使用 Seestar(Erlang Cassandra 驱动程序)
- 增量是通过执行准备好的语句来完成的。准备好的语句被缓存,不会每次都重新准备。
- 语句未调用'async'。
- 我们正在使用 Cassandra v2。0.x
Nodetool的输出显示每3次写入大约有1次读取。
请注意,当我在单节点集群中进行本地测试时,读取为零 - 所以这只是发生在我们的生产环境中。
实际上有一个读取涉及递增计数器。这篇文章很好地描述了 pre 2.1 和 2.1 中的计数器:http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-1-a-better-implementation-of-counters