2015-02-06 70 views
1

我正在使用Cassandra來保存我們需要處理的某些分析的計數器字段。爲什麼在Cassandra中增加一個計數器時會看到「讀取」?

我注意到,對於給定的寫入事件(其中一堆計數器遞增),似乎有一個「讀取」操作。這意味着讀取在等待「寫入」操作完成時排隊。

我的理解是,應該沒有讀取,並且只是對每個事務寫入計數器增量。

一些額外的信息:

  • 我使用Seestar(二郎卡桑德拉司機)
  • 的增量通過執行預處理語句來完成。準備好的語句被緩存,並且不會每次都重新準備。
  • 該聲明不稱爲「異步」。
  • 我們正在使用Cassandra的V2.0則

Nodetool的輸出顯示,有對每3個寫1讀。

請注意,當我在單個節點羣集中進行本地測試時,讀取次數爲零 - 因此這只是發生在我們的生產環境中。

回答

4

實際上有讀取涉及遞增計數器。這篇文章很好地描述了2.1和2.1版本中的計數器:http://www.datastax.com/dev/blog/whats-new-in-cassandra-2-1-a-better-implementation-of-counters

+0

謝謝 - 這是最終的正確答案,但我認爲我會給出額外的上下文:我在cassandra-stress中運行了counter_add測試,並且沒有讀取」。但是,cassandra-stress腳本添加了新分區,而不是增加現有分區。添加新分區不會產生讀取,而增加現有分區會產生讀取!謝謝。 – 2015-02-07 12:27:44

相關問題