MariaDB
 sql >> Baza danych >  >> RDS >> MariaDB

MariaDB BENCHMARK() Objaśnienie

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'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie Sysbench do generowania danych testowych dla tabeli podzielonej na fragmenty w MySQL

  2. Jak działa MAKE_SET() w MariaDB

  3. Jak działa POSITION() w MariaDB

  4. MariaDB RTRIM() vs RTRIM_ORACLE():Jaka jest różnica?

  5. 4 funkcje, które zwracają minuty z wartości czasu w MariaDB