W MariaDB, BENCHMARK() to wbudowana funkcja, która wykonuje wyrażenie określoną liczbę razy.
Może być używany do określania czasu, jak szybko MariaDB przetwarza wyrażenie.
Wynik to zawsze 0 . Funkcja jest przeznaczona do użycia w narzędziu wiersza poleceń mysql, które raportuje czasy wykonania zapytań.
Składnia
Składnia wygląda tak:
BENCHMARK(count,expr)
Gdzie count to ile razy chcesz expr do uruchomienia.
Przykład 1
Oto przykład do zademonstrowania:
SELECT BENCHMARK(2, SLEEP(2)); Wynik:
+------------------------+ | BENCHMARK(2, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (4.015 sec)
Zgodnie z oczekiwaniami 0 Został zwrócony. Jednak to, co nas interesuje, to czas wykonania zapytania.
Tutaj użyłem SLEEP() funkcja spania przez 2 sekundy. Użycie tej funkcji samo w sobie normalnie powodowałoby, że wykonanie instrukcji zajęłoby około 2 sekund.
Jednak w tym przypadku zdałem 2 jako pierwszy argument BENCHMARK() . To spowodowało SLEEP() funkcja zostanie wykonana dwukrotnie, powodując BENCHMARK() wykonanie tej funkcji zajmie około 4 sekund (dokładnie 4.015 sekund).
Oto, co się stanie, jeśli zwiększymy pierwszy argument do 3 :
SELECT BENCHMARK(3, SLEEP(2)); Wynik:
+------------------------+ | BENCHMARK(3, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (6.012 sec)
Tym razem SLEEP() funkcja została wykonana trzy razy, więc BENCHMARK() wykonanie zajęło nieco ponad 6 sekund.
Przykład 2
Oto przykład, który używa ENCODE() funkcja do kodowania ciągu znaków (pierwszy argument) z hasłem (drugi argument):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom')); Wynik:
+-----------------------------------------------+
| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
1 row in set (0.016 sec) Widzimy, że operacja trwała 0,016 sekundy.
Zwiększmy pierwszy argument ze 100 000 do 1 000 000 i zobaczmy, jak wpływa to na czas wykonania.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom')); Wynik:
+------------------------------------------------+
| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.118 sec) Tym razem uruchomienie trwało znacznie dłużej.
Argument zerowy
Jeśli pierwszym argumentem jest null , a następnie null jest zwracany:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom')); Wynik:
+---------------------------------------------+
| BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set (0.007 sec)
Ale jeśli tylko drugi argument to null , a następnie 0 jest zwracany:
SELECT BENCHMARK(100000, null); Wynik:
+-------------------------+ | BENCHMARK(100000, null) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.002 sec)
Nieprawidłowa liczba argumentów
Wywołanie BENCHMARK() bez argumentów lub z niewłaściwą liczbą argumentów powoduje błąd:
SELECT BENCHMARK(); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'
Oraz:
SELECT BENCHMARK(1, 2, 3); Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'