2017-10-10 56 views
1

我在卡桑德拉表中的每行有大約200列。
我有單節點集羣截至目前。列數影響cassandra?

當我使用CPP datastax驅動程序運行大約100,000條記錄時,我每秒鐘獲得3500次寫入和每秒30,000次讀取。但是,當我將所有列保留在一個Blob類型的列中(不包括Cassandra中的主鍵(分區鍵))時,我的性能會以每秒40,000次寫入和每秒70,000次讀取的速度大幅增長。

列數對Cassandra的性能產生影響嗎?
另外,1行的數據大小几乎不到1kB。

回答

0

Theres在反序列化和序列化數據以及跟蹤不同列的開銷。在3.0之前的版本中,存儲大量冗餘數據的影響也更加糟糕。它在3.0中好得多,但如果你自己從blob進行反序列化並且在db中調試和統計能力有限,那麼你將獲得更好的性能。

+0

謝謝克里斯。所以根據你的說法,隨着列數的增加,cassandra節點的延遲會增加。另外,我想糾正我在100,000行上進行了非預先測試的測試,而不是10,000。 – Ankit

+0

它取決於列的類型,反序列化需要多長時間。它應該是非常小的,但。在沒有看到代碼的情況下,如果並行化查詢,您可以獲得更接近的吞吐量,但是如果您以非異步或順序執行任何操作,則無論多小都會增加請求延遲,從而降低吞吐量(小數法則)。我強烈建議你先用cassandra-stress測試你的數據模型,以排除客戶端的任何低效使用。每秒寫入3k的速度非常慢,它應該比讀取更快。 –