En MariaDB, BENCHMARK() es una función integrada que ejecuta una expresión un número específico de veces.
Se puede utilizar para cronometrar la rapidez con que MariaDB procesa la expresión.
El resultado siempre es 0 . La función está diseñada para usarse dentro de la herramienta de línea de comandos mysql, que informa los tiempos de ejecución de las consultas.
Sintaxis
La sintaxis es así:
BENCHMARK(count,expr)
Donde count es el número de veces que desea expr para correr.
Ejemplo 1
Aquí hay un ejemplo para demostrarlo:
SELECT BENCHMARK(2, SLEEP(2)); Resultado:
+------------------------+ | BENCHMARK(2, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (4.015 sec)
Como era de esperar, 0 fue devuelto Sin embargo, lo que nos interesa es el tiempo de ejecución de la consulta.
Aquí usé SLEEP() Función para dormir durante 2 segundos. El uso de esta función por sí sola normalmente haría que la declaración tardara alrededor de 2 segundos en ejecutarse.
Sin embargo, en este caso pasé 2 como primer argumento de BENCHMARK() . Eso causó el SLEEP() función para ejecutar dos veces, lo que hace que BENCHMARK() la función tarda unos 4 segundos en ejecutarse (4,015 segundos para ser precisos).
Esto es lo que sucede si aumentamos el primer argumento a 3 :
SELECT BENCHMARK(3, SLEEP(2)); Resultado:
+------------------------+ | BENCHMARK(3, SLEEP(2)) | +------------------------+ | 0 | +------------------------+ 1 row in set (6.012 sec)
Esta vez el SLEEP() La función se ejecutó tres veces, por lo que BENCHMARK() tardó poco más de 6 segundos en ejecutarse.
Ejemplo 2
Aquí hay un ejemplo que usa ENCODE() función para codificar una cadena (primer argumento) con una contraseña (segundo argumento):
SELECT BENCHMARK(100000, ENCODE('Homer', 'Symptom')); Resultado:
+-----------------------------------------------+
| BENCHMARK(100000, ENCODE('Homer', 'Symptom')) |
+-----------------------------------------------+
| 0 |
+-----------------------------------------------+
1 row in set (0.016 sec) Podemos ver que la operación tardó 0,016 segundos en completarse.
Aumentemos el primer argumento de 100 000 a 1 000 000 y veamos cómo afecta eso al tiempo de ejecución.
SELECT BENCHMARK(1000000, ENCODE('Homer', 'Symptom')); Resultado:
+------------------------------------------------+
| BENCHMARK(1000000, ENCODE('Homer', 'Symptom')) |
+------------------------------------------------+
| 0 |
+------------------------------------------------+
1 row in set (0.118 sec) Esta vez tardó mucho más en ejecutarse.
Argumento nulo
Si el primer argumento es null , luego null se devuelve:
SELECT BENCHMARK(null, ENCODE('Homer', 'Symptom')); Resultado:
+---------------------------------------------+
| BENCHMARK(null, ENCODE('Homer', 'Symptom')) |
+---------------------------------------------+
| NULL |
+---------------------------------------------+
1 row in set (0.007 sec)
Pero si solo el segundo argumento es null , luego 0 se devuelve:
SELECT BENCHMARK(100000, null); Resultado:
+-------------------------+ | BENCHMARK(100000, null) | +-------------------------+ | 0 | +-------------------------+ 1 row in set (0.002 sec)
Número de argumentos no válido
Llamando a BENCHMARK() sin argumentos, o con el número incorrecto de argumentos, da como resultado un error:
SELECT BENCHMARK(); Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'
Y:
SELECT BENCHMARK(1, 2, 3); Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'BENCHMARK'