In MariaDB, BENCHMARK()
ist eine eingebaute Funktion, die einen Ausdruck eine bestimmte Anzahl von Malen ausführt.
Es kann verwendet werden, um zu messen, wie schnell MariaDB den Ausdruck verarbeitet.
Das Ergebnis ist immer 0
. Die Funktion ist für die Verwendung im mysql-Befehlszeilentool vorgesehen, das die Ausführungszeiten von Abfragen meldet.
Syntax
Die Syntax lautet wie folgt:
BENCHMARK(count,expr)
Wobei count
ist die Anzahl der gewünschten expr
laufen.
Beispiel 1
Hier ist ein Beispiel zur Veranschaulichung:
SELECT BENCHMARK(2, SLEEP(2));
Ergebnis:
+------------------------+| BENCHMARK(2, SLEEP(2)) |+------------------------+| 0 |+--------------------------------+1 Reihe im Satz (4,015 Sek.)
Wie erwartet, 0
wurde zurückgegeben. Was uns jedoch interessiert, ist die Ausführungszeit der Abfrage.
Hier habe ich den SLEEP()
verwendet Funktion zum Schlafen für 2 Sekunden. Die alleinige Verwendung dieser Funktion würde normalerweise dazu führen, dass die Ausführung der Anweisung etwa 2 Sekunden dauert.
In diesem Fall habe ich jedoch 2
bestanden als erstes Argument für BENCHMARK()
. Das hat den SLEEP()
verursacht zweimal ausgeführt, was zu BENCHMARK()
führt Die Ausführung der Funktion dauert etwa 4 Sekunden (um genau zu sein 4,015 Sekunden).
Folgendes passiert, wenn wir das erste Argument auf 3
erhöhen :
SELECT BENCHMARK(3, SLEEP(2));
Ergebnis:
+------------------------+| BENCHMARK(3, SLEEP(2)) |+------------------------+| 0 |+-------------------------------+1 Zeile im Satz (6,012 Sek.)
Diesmal das SLEEP()
Die Funktion wurde dreimal ausgeführt, also BENCHMARK()
Die Ausführung dauerte etwas mehr als 6 Sekunden.
Beispiel 2
Hier ist ein Beispiel, das ENCODE()
verwendet Funktion zum Kodieren einer Zeichenkette (erstes Argument) mit einem Passwort (zweites Argument):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom'));
Ergebnis:
Wir können sehen, dass der Vorgang 0,016 Sekunden dauerte, bis er abgeschlossen war.
Lassen Sie uns das erste Argument von 100.000 auf 1.000.000 erhöhen und sehen, wie sich das auf die Ausführungszeit auswirkt.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom'));
Ergebnis:
Diesmal dauerte die Ausführung viel länger.
Null-Argument
Wenn das erste Argument null
ist , dann null
wird zurückgegeben:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom'));
Ergebnis:
+---------------------------------------------+ | BENCHMARK(null, ENCODE('Homer', 'Symptom')) |+---------------------------------------------- -------------+| NULL |+---------------------------------------------+1 Reihe im Satz (0,007 Sek.)
Aber wenn nur das zweite Argument null
ist , dann 0
wird zurückgegeben:
SELECT BENCHMARK(100000, null);
Ergebnis:
+-------------------------+| BENCHMARK(100000, null) |+--------------------+| 0 |+-------------------------+1 Zeile im Satz (0,002 Sek.)
Ungültige Anzahl von Argumenten
Aufruf von BENCHMARK()
ohne Argumente oder mit der falschen Anzahl von Argumenten führt zu einem Fehler:
SELECT BENCHMARK();
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'BENCHMARK'
Und:
SELECT BENCHMARK(1, 2, 3);
Ergebnis:
FEHLER 1582 (42000):Falsche Parameteranzahl im Aufruf der nativen Funktion 'BENCHMARK'