In MariaDB, BENCHMARK() è una funzione incorporata che esegue un'espressione un numero di volte specificato.
Può essere utilizzato per calcolare la velocità con cui MariaDB elabora l'espressione.
Il risultato è sempre 0 . La funzione deve essere utilizzata all'interno dello strumento da riga di comando mysql, che riporta i tempi di esecuzione delle query.
Sintassi
La sintassi è questa:
BENCHMARK(count,expr)
Dove count è il numero di volte che vuoi expr per correre.
Esempio 1
Ecco un esempio da dimostrare:
SELECT BENCHMARK(2, SLEEP(2)); Risultato:
+------------------------+ | BENCHMARK(2, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (4.015 sec)
Come previsto, 0 è stato restituito. Tuttavia, ciò che ci interessa è il tempo di esecuzione della query.
Qui ho usato SLEEP() funzione per dormire per 2 secondi. L'utilizzo di questa funzione da sola normalmente fa sì che l'istruzione richieda circa 2 secondi per l'esecuzione.
Tuttavia, in questo caso ho passato 2 come primo argomento per BENCHMARK() . Ciò ha causato il SLEEP() funzione da eseguire due volte, causando il BENCHMARK() funzione per l'esecuzione di circa 4 secondi (4.015 secondi per la precisione).
Ecco cosa succede se aumentiamo il primo argomento a 3 :
SELECT BENCHMARK(3, SLEEP(2)); Risultato:
+------------------------+ | BENCHMARK(3, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (6.012 sec)
Questa volta il SLEEP() la funzione è stata eseguita tre volte, quindi BENCHMARK() ci sono voluti poco più di 6 secondi per l'esecuzione.
Esempio 2
Ecco un esempio che utilizza ENCODE() funzione per codificare una stringa (primo argomento) con una password (secondo argomento):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom')); Risultato:
+-----------------------------------------------+
| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
1 row in set (0.016 sec) Possiamo vedere che l'operazione ha richiesto 0,016 secondi per essere completata.
Aumentiamo il primo argomento da 100.000 a 1.000.000 e vediamo come ciò influisce sul tempo di esecuzione.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom')); Risultato:
+------------------------------------------------+
| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.118 sec) Questa volta ci è voluto molto più tempo per l'esecuzione.
Argomento nullo
Se il primo argomento è null , quindi null viene restituito:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom')); Risultato:
+---------------------------------------------+
| BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set (0.007 sec)
Ma se solo il secondo argomento è null , quindi 0 viene restituito:
SELECT BENCHMARK(100000, null); Risultato:
+-------------------------+ | BENCHMARK(100000, null) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.002 sec)
Numero di argomenti non valido
Chiamando BENCHMARK() senza argomenti, o con il numero errato di argomenti, genera un errore:
SELECT BENCHMARK(); Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'
E:
SELECT BENCHMARK(1, 2, 3); Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'