MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB BENCHMARK() erklärt

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:

+---------------------------------------------- -+| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |+-------------------------------- --------------+| 0 |+---------------------------------------------- +1 Reihe im Satz (0,016 Sek.)

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:

+---------------------------------------------- --+| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |+-------------------------------- ---------------+| 0 |+---------------------------------------------- -+1 Reihe im Satz (0,118 Sek.)

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'