2016-06-09 27 views
0

我希望我們的開發人員能夠知道表中有多少行(粗略)。如何在只有CQL的情況下在Cassandra中獲得行數?

「從表中SELECT COUNT(*)」這樣做,因爲你得到一個超時錯誤,除非該表是非常小(在一百萬行)不起作用。

在〜/ .cassandra/cqlshrc中增加client_timeout從來沒有爲我們工作過,即使它做到了讓開發人員針對生產運行10分鐘查詢可能不是一個好主意。 :)

而且,由於這是一個生產集羣,開發人員不必SSH訪問服務器到服務器上運行「nodetool」本地。

運行「nodetool」遠程需要啓用遠程JMX和應用JMX的安全性。這似乎只是爲了估計表格大小。有人可以用JMX訪問來做任何危險的事情嗎?

有沒有在所有得到任何形式的行表中的數量估計的任何其他的選擇嗎?

謝謝!

回答

2

你可以嘗試導出表到CSV然後就做了CSV的行數。這在性能方面並不理想,但它不會像計數那樣超時。

COPY table_name TO filename_or_path.csv; 

有關副本詳細信息請參閱:http://docs.datastax.com/en/cql/3.1/cql/cql_reference/copy_r.html

另一個更「蔣梅鑫」如果你正在運行datastax卡桑德拉選擇是到一個節點安裝OpsCenter,這將創建一個用戶界面,你可以暴露給有很多有用指標和健康狀態的開發人員。我不認爲它直接有數字或行,但如果知道這個值,它的數據量可以除以平均行的大小。

http://www.datastax.com/products/datastax-enterprise-visual-admin

*編輯:我只是意識到上面的鏈接是OpsCenter的企業版,但包括它的描述。有(或至少是)社區版也可以使用。

+0

O__O我不知道爲什麼我沒有想到這一點!謝謝! :) – Beaker

相關問題