I MariaDB, BENCHMARK() är en inbyggd funktion som exekverar ett uttryck ett visst antal gånger.
Den kan användas för att tajma hur snabbt MariaDB bearbetar uttrycket.
Resultatet är alltid 0 . Funktionen är avsedd att användas inom kommandoradsverktyget mysql, som rapporterar körningstider för frågor.
Syntax
Syntaxen ser ut så här:
BENCHMARK(count,expr)
Där count är antalet gånger du vill ha expr att springa.
Exempel 1
Här är ett exempel att visa:
SELECT BENCHMARK(2, SLEEP(2)); Resultat:
+------------------------+ | BENCHMARK(2, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (4.015 sec)
Som förväntat, 0 återlämnades. Men det vi är intresserade av är söktiden.
Här använde jag SLEEP() funktion för att sova i 2 sekunder. Att använda den här funktionen i sig skulle normalt göra att uttalandet tar cirka 2 sekunder att köra.
Men i det här fallet klarade jag 2 som det första argumentet till BENCHMARK() . Det orsakade SLEEP() funktionen körs två gånger, vilket orsakar BENCHMARK() funktionen tar cirka 4 sekunder att köra (4,015 sekunder för att vara exakt).
Här är vad som händer om vi ökar det första argumentet till 3 :
SELECT BENCHMARK(3, SLEEP(2)); Resultat:
+------------------------+ | BENCHMARK(3, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (6.012 sec)
Den här gången SLEEP() funktionen kördes tre gånger, och så BENCHMARK() tog drygt 6 sekunder att köra.
Exempel 2
Här är ett exempel som använder ENCODE() funktion för att koda en sträng (första argument) med ett lösenord (andra argument):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom')); Resultat:
+-----------------------------------------------+
| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
1 row in set (0.016 sec) Vi kan se att operationen tog 0,016 sekunder att slutföra.
Låt oss öka det första argumentet från 100 000 till 1 000 000 och se hur det påverkar körningstiden.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom')); Resultat:
+------------------------------------------------+
| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.118 sec) Den här gången tog det mycket längre tid att köra.
Nollargument
Om det första argumentet är null , sedan null returneras:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom')); Resultat:
+---------------------------------------------+
| BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set (0.007 sec)
Men om bara det andra argumentet är null , sedan 0 returneras:
SELECT BENCHMARK(100000, null); Resultat:
+-------------------------+ | BENCHMARK(100000, null) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.002 sec)
Ogiltigt antal argument
Anropar BENCHMARK() utan argument, eller med fel antal argument, resulterar i ett fel:
SELECT BENCHMARK(); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'
Och:
SELECT BENCHMARK(1, 2, 3); Resultat:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'