sql >> Databasteknik >  >> RDS >> MariaDB

MariaDB BENCHMARK() Förklarat

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'

  1. hur man tar bort dubbletter av rader från en tabell i mysql

  2. 3 sätt att konvertera decimal till hexadecimal i SQL Server (T-SQL)

  3. Hur versionerar du ditt databasschema?

  4. fel vid insättning av android.database.sqlite.sqliteconstraintexception felkod 19 begränsning misslyckades