2017-11-02 1 views
0

Ich habe eine Cassandra Tisch mit Terabytes von Daten (Cassandra Version 2.0 ist), hier ist das, was das Schema sieht wieüberprüfen Tabellengröße in cassandra historisch

"my_table" (
    key ascii, 
    timestamp bigint, 
    value blob, 
    PRIMARY KEY ((key), timestamp) 
) 

Ich möchte einige Daten löschen, aber bevor Sie abschätzen wollen, wie viel Speicherplatz es zurückgewinnt.

Leider sind Statistiken von JMX-Metriken nur für die letzten zwei Wochen verfügbar, also ist das nicht sehr nützlich.

Gibt es eine Möglichkeit zu überprüfen, wie viel Speicherplatz von bestimmten Datensätzen verwendet wird (z. B. wo Timestamp < 1000)?

Ich fragte mich auch, ob es eine Möglichkeit gibt, Abfrage Ergebnismenge zu überprüfen, so dass ich etwas wie select * from my_table where timestamp < 1000 tun kann und sehen, wie viele Bytes das Ergebnis belegt.

Antwort

1

Es gibt keinen Mechanismus, um die Größe auf der Festplatte aus den Daten zu sehen, es kann ziemlich weit entfernt sein vom Koordinator der Anfrage und theres Ebenen, die es wie Kompression und mehrere stables beeinflussen, die es schwierig machen würde.

Beachten Sie auch, dass das Löschen nicht sofort Speicherplatz reduziert. C * löscht Daten nicht, die Stable sind unveränderlich und können nicht geändert werden. Stattdessen schreibt es einen Tombstone-Eintrag, der nach gc_grace_seconds verschwindet. Wenn sstables zusammengeführt werden, würden die Tombstone + -Daten nur als Tombstone dienen. Nach dem gc_grace_seconds wird der Tombstone während der Komprimierung nicht mehr kopiert.

Der gc_grace soll verhindern, dass gelöschte Daten in einem verteilten System verloren gehen, da bis zu einer Reparatur (sollte ~ wöchentlich geplant werden) keine absolute Garantie besteht, dass das Löschen von allen Replikaten gesehen wurde. Wenn ein Replikat das Löschen nicht gesehen hat und Sie das Tombstone entfernen, können die Daten zurückkommen.

1

Nein, nicht wirklich.

Mit sstablemetadata können Sie Tombstone Drop Zeiten, minimale Zeitstempel und maximale Zeitstempel in den mc-####-big-data.db Dateien finden.

Zusätzlich, wenn Sie wenig Platz auf der Festplatte haben, betrachten Sie nodetool cleanup, nodetool clearsnapshot und schließlich nodetool repair.

+0

Als eine Anmerkung, das nodetool clearsnapshot kann Ihre "Backups" loswerden. Diese werden erstellt, wenn Sie Tabellen abschneiden und löschen, damit Sie sie wiederherstellen können. Wenn Sie also nach Speicherplatz auf der Festplatte suchen, können Sie sie sicher löschen. – Highstead

Verwandte Themen