2016-03-07 38 views
1

目前,我有3個Cassandra節點。爲什麼空間使用率爲0,雖然我已經插入了> 40k行

我創建一個名爲events

表中插入> 40K行後,我的每個節點執行以下命令。

nodetool -h localhost cfstats 

這是從該節點的一個

Table: events 
    SSTable count: 0 
    Space used (live): 0 
    Space used (total): 0 
    Space used by snapshots (total): 43516 
    Off heap memory used (total): 0 
    SSTable Compression Ratio: 0.0 
    Number of keys (estimate): 1 
    Memtable cell count: 102675 
    Memtable data size: 4224801 
    Memtable off heap memory used: 0 
    Memtable switch count: 1 
    Local read count: 0 
    Local read latency: NaN ms 
    Local write count: 4223 
    Local write latency: 0.085 ms 
    Pending flushes: 0 
    Bloom filter false positives: 0 
    Bloom filter false ratio: 0.00000 
    Bloom filter space used: 0 
    Bloom filter off heap memory used: 0 
    Index summary off heap memory used: 0 
    Compression metadata off heap memory used: 0 
    Compacted partition minimum bytes: 0 
    Compacted partition maximum bytes: 0 
    Compacted partition mean bytes: 0 
    Average live cells per slice (last five minutes): 0.0 
    Maximum live cells per slice (last five minutes): 0.0 
    Average tombstones per slice (last five minutes): 0.0 
    Maximum tombstones per slice (last five minutes): 0.0 

輸出令我驚訝的,Space used (live)Space used (total)是0,另外節點也具有0 Space used (live)Space used (total)

但是,當我執行SELECT時,我可以獲得先前插入的多行。

我可以知道,爲什麼我的Space used (live)Space used (total) 0對於所有節點?

回答

3

您的Memtables尚未刷新到磁盤。同花順一般是由幾件事情觸發:

  • 的memTable中達到最大閾值大小
  • 一個提交負責該memTable中到期
  • 用戶呼叫數據記錄段nodetool刷新

如果你插入40k行,然後什麼也不做,只要它們適合記憶,它們將留在記憶中。您將看不到這些行的永久性磁盤使用情況,因爲沒有磁盤上的sstable保存它們的值。

這些行的持久性由commit-log保證,commit-log按照它們在磁盤上發生的順序存儲突變,並且可以在發生節點故障時重播。 commit-log是一個滾動日誌,所以當commit-log segement即將到期時,Cassandra會將保存該段數據的memtable刷新到磁盤上的sstable。

+0

是的。你是對的。插入10百萬行之後,我可以看到非零空間(實時)和空間已用(總計) –

相關問題