2017-02-05 11 views
0

Es gibt einen Unterschied in Cassandra zwischen Zeilen, die durch update und durch insert erstellt wurden, und es beeinflusst das Verhalten von ttl und Zeilen mit Nicht-Schlüsselspalten "alle Nullen".Cassandra Einfügen und Aktualisieren von Leistungsunterschieden

Abgesehen von diesem Verhalten hat dies Auswirkungen auf die Leistung beim Erstellen/Löschen/Auswählen einer solchen Zeile?

Link zu JIRA beschreibt dieses Verhalten:

https://issues.apache.org/jira/browse/CASSANDRA-8430

Antwort

2

1. "Execution Plan": Ausführen derselben Abfrage (Auswahl von Primärschlüssel), source_elapsed Säule:

erstellen als Insert :

2266,1768,1672,3302,3324,1422,1623,3833,3933,3519,4166. Durchschnitt: 2803

als Aktualisierung erstellen:

1621,3498,4769,3680,3905,1781,4215,3764,3747,3460,1987. Avg: 3312

Vielleicht sieht es aus wie Update ist ein bisschen langsamer, aber das ist nicht wirklich konsistent, und ich glaube, dass mit einer höheren Anzahl von Ausführungen sollten sie gleich sein.

2. Lagerung:

Row als Insert erstellt:

[user1] @ 184 Row [info = [ts = 1486368137507000 ttl = 3600, lassen = 1486371737]]: 2017-01-01 14: 00Z, bla, 5,2 | [Blu = 77777 ts = 1486368137507000 ttl = 3600 LDT = 1486371737], [ble = 0 ts = 1486368137507000 ttl = 3600 LDT = 1486371737]

Row als Update-erstellt:

[user30] @ 122 Reihe [info = [ts = -9223372036854775808]]: 2017-01-01 14: 00Z, bla, 5,2 | [Blu = 777 ts = 1486368139142000 ttl = 3600 LDT = 1486371739], [ble = 1 ts = 1486368139142000 ttl = 3600 LDT = 1486371739]

Ich gehe davon aus, dass in der Tat sstabledump Daten darstellt, wie sie in der Datei gespeichert. Der einzige Unterschied hier ist, dass die Zeile, die als Einfügung erstellt wurde, mit ttl generiert wird und Spalten auf Zeilenebene (und ts auf die erzeugte Zeit) setzt - dies ist der Grund, dass Zeilen mit allen Null-Nicht-Schlüsselspalten mit create als Einfügung und anwählbar sind nicht wählbar mit create as update. So werden mit insert erstellte Zeilen mehrere Bytes mehr Speicher benötigen, das ist der Unterschied.

3.Grabsteine:

Erstellt als Insert:

[user1] @ 48 Row [info = [ts = -9223372036854775808]]: 2017.01.01 14: 00Z, bla, 5,2 | [Blu = ts = 1486368407044000 LDT = 1486368406], [ble = ts = 1486368407044000 LDT = 1486368406]

als Update-Erstellt:

[user30] @ 0 Row [info = [ts = -9223372036854775808] ]: 2017-01-01 14: 00Z, bla, 5,2 | [Blu = ts = 1486368403444000 LDT = 1486368403], [ble = ts = 1486368403444000 LDT = 1486368403]

Wie erwartet, Grabsteine ​​sieht genau das gleiche für beide erzeugt.

Zusammenfassung:

Aus meiner Beobachtung gibt es keinen wirklichen Unterschied in der Leistung zwischen zwei Arten von Zeilen Schöpfung. Ich werde mich freuen, andere Tests/Beobachtungen/Quellcode-Bewertungen hier zu sehen.

Verwandte Themen