Die Auswirkungen von Redis SCAN auf die Leistung und wie KeyDB sie verbessert hat

Blog

SCAN ist ein leistungsstarkes Tool zum Abfragen von Daten, aber seine blockierende Natur kann bei starker Nutzung die Leistung beeinträchtigen. KeyDB hat die Art dieses Befehls in seiner Pro-Edition geändert, was eine Leistungsverbesserung um Größenordnungen ermöglicht!



In diesem Artikel werden die Einschränkungen bei der Verwendung des SCAN-Befehls und die Auswirkungen auf die Leistung untersucht. Es zeigt die erhebliche Leistungseinbuße, die bei Redis auftritt, und es wird auch untersucht, wie KeyDB Pro dies durch die Implementierung einer MVCC-Architektur gelöst hat, die es ermöglicht, SCAN nicht zu blockieren und negative Auswirkungen auf die Leistung zu vermeiden.

SCHLÜSSEL vs. SCANNEN

Die SCAN-Funktion wurde entwickelt, um den blockierenden KEYS-Befehl aufzubrechen, der bei der Verwendung in der Produktion zu großen Problemen führen kann. Viele Redis-Benutzer kennen die Folgen dieser Verlangsamung für ihre Produktionsworkloads zu gut.



Der KEYS-Befehl und der SCAN-Befehl können nach allen Schlüsseln suchen, die einem bestimmten Muster entsprechen. Der Unterschied zwischen den beiden besteht darin, dass SCAN den Schlüsselraum in Stapeln mit einem Cursor durchläuft, um zu verhindern, dass die Datenbank für die Dauer der Abfrage vollständig blockiert wird.

Preis der tiefen Gehirnkette

Die grundlegende Verwendung ist wie folgt:



Hülse

1

keydb-cli:6379> KEYS [pattern]

2

keydb-cli:6379> SCAN cursor [MATCH pattern] [COUNT count]

Im folgenden Beispiel werden alle Schlüssel durchsucht, die das Muster 22 enthalten. Der Cursor beginnt bei Position 0 und durchsucht 100 Tasten gleichzeitig. Das zurückgegebene Ergebnis gibt zuerst die nächste Cursornummer und alle Werte im Batch zurück, die 22 im Schlüsselnamen enthielten.

Hülse

1

keydb-ci: 6379> SCAN 0 MATCH *22* COUNT 100

2

1) 2656

3

2) 1) 220

4

2) 3022

5

3) 4224

6

4) 22

Weitere Informationen zur Verwendung von SCAN finden Sie in der Dokumentation hier https://docs.keydb.dev/docs/commands/#scan

ANZAHL SCANNEN

COUNT ist die Anzahl von Schlüsseln, die gleichzeitig pro Cursor-Iteration durchsucht werden sollen. Je kleiner die Anzahl, desto mehr inkrementelle Iterationen sind für einen gegebenen Datensatz erforderlich. Unten sehen Sie ein Diagramm, das die Ausführungszeit für einen Datensatz mit 5 Millionen Schlüsseln mit verschiedenen COUNT-Einstellungen zeigt.

Wie zu bemerken ist, erhöht sich bei sehr kleinen Zählgrößen die Zeit, die zum Durchlaufen aller Schlüssel benötigt wird, erheblich. Die Gruppierung in größere Mengen führt zu einer geringeren Latenz für den SCAN-Abschluss. Losgrößen von 1000 oder mehr liefern viel schneller Ergebnisse.

Bei Redis ist es wichtig, eine Größe zu wählen, die klein genug ist, um das Blockierungsverhalten des Befehls während der Produktion zu minimieren.

#Datenbank #Tutorial #devops

scikit-learn vs hart

dzone.com

Die Auswirkungen von Redis SCAN auf die Leistung und wie KeyDB sie verbessert hat

Die Auswirkungen von Redis SCAN auf die Leistung und wie KeyDB sie verbessert hat: In diesem Artikel werden die Einschränkungen bei der Verwendung des SCAN-Befehls und die Auswirkungen auf die Leistung untersucht.