MariaDB
 sql >> база данни >  >> RDS >> MariaDB

MariaDB BENCHMARK() Обяснено

В MariaDB, BENCHMARK() е вградена функция, която изпълнява израз определен брой пъти.

Може да се използва за измерване на времето колко бързо MariaDB обработва израза.

Резултатът винаги е 0 . Функцията е предназначена да се използва в инструмента на командния ред на mysql, който отчита времената за изпълнение на заявката.

Синтаксис

Синтаксисът е така:

BENCHMARK(count,expr)

Където count е колко пъти искате expr да тичам.

Пример 1

Ето пример за демонстрация:

SELECT BENCHMARK(2, SLEEP(2));

Резултат:

+------------------------+
| BENCHMARK(2, SLEEP(2)) |
+------------------------+
|                      0 |
+------------------------+
1 row in set (4.015 sec)

Както се очакваше, 0 беше върнат. Въпреки това, това, което ни интересува, е времето за изпълнение на заявката.

Тук използвах SLEEP() функция за заспиване за 2 секунди. Използването на тази функция самостоятелно би накарало изпълнението на оператора да отнеме около 2 секунди.

В този случай обаче минах 2 като първи аргумент на BENCHMARK() . Това причини SLEEP() функция да се изпълни два пъти, причинявайки BENCHMARK() функция, за да отнеме около 4 секунди за изпълнение (4,015 секунди за да бъдем точни).

Ето какво се случва, ако увеличим първия аргумент до 3 :

SELECT BENCHMARK(3, SLEEP(2));

Резултат:

+------------------------+
| BENCHMARK(3, SLEEP(2)) |
+------------------------+
|                      0 |
+------------------------+
1 row in set (6.012 sec)

Този път SLEEP() функцията беше изпълнена три пъти и така BENCHMARK() отне малко повече от 6 секунди за изпълнение.

Пример 2

Ето пример, който използва ENCODE() функция за кодиране на низ (първи аргумент) с парола (втори аргумент):

SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom'));

Резултат:

+-----------------------------------------------+
| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+
1 row in set (0.016 sec)

Виждаме, че операцията отне 0,016 секунди, за да завърши.

Нека увеличим първия аргумент от 100 000 на 1 000 000 и да видим как това се отразява на времето за изпълнение.

SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom'));

Резултат:

+------------------------------------------------+
| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
+------------------------------------------------+
|                                              0 |
+------------------------------------------------+
1 row in set (0.118 sec)

Този път стартирането отне много повече време.

Нулев аргумент

Ако първият аргумент е null , след това null се връща:

SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom'));

Резултат:

+---------------------------------------------+
| BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
+---------------------------------------------+
|                                        NULL |
+---------------------------------------------+
1 row in set (0.007 sec)

Но ако само вторият аргумент е null , след това 0 се връща:

SELECT BENCHMARK(100000, null);

Резултат:

+-------------------------+
| BENCHMARK(100000, null) |
+-------------------------+
|                       0 |
+-------------------------+
1 row in set (0.002 sec)

Невалиден брой аргументи

Извикване на BENCHMARK() без аргументи или с грешен брой аргументи, води до грешка:

SELECT BENCHMARK();

Резултат:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'

И:

SELECT BENCHMARK(1, 2, 3);

Резултат:

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. Как работи DEGREES() в MariaDB

  2. COUNT() Функция в MariaDB

  3. 4 функции за връщане на годината от дата в MariaDB

  4. Как да постигнем PCI съответствие за MySQL и MariaDB с ClusterControl - Повторението

  5. MariaDB JSON_VALID() Обяснено