Ce face BENCHMARK()
BENCHMARK() calculează expresia de numar ori și returnează mereu 0. Rezultatul care contează este timpul afișat de clientul mysql după interogare (de exemplu 1 row in set (0.43 sec)).
Expresia trebuie să fie scalară: o valoare, nu un tabel. Timpul măsoară doar calculul expresiei, fără analiza interogării sau transferul prin rețea. Rulează testul de câteva ori, pentru că rezultatul depinde de cât de ocupat este serverul.
Parametri
| Parametru | Descriere |
|---|---|
numar |
De câte ori se calculează expresia. |
expresie |
Expresia testată. |
Ce returnează
0, sau NULL pentru argumente greșite (de exemplu un număr negativ).
Exemple
Exemplul 1: Rezultatul este mereu 0
SELECT BENCHMARK(100000, SHA2('dexblog', 256)) AS rezultat;
Rezultat
+----------+
| rezultat |
+----------+
| 0 |
+----------+
Exemplul 2: Timpul, în clientul mysql
Am folosit RAND() în expresie, ca serverul să o calculeze de fiecare dată.
SELECT BENCHMARK(1000000, SHA2(RAND(), 256));
Rezultat în clientul mysql (timpul diferă)
+---------------------------------------+
| BENCHMARK(1000000, SHA2(RAND(), 256)) |
+---------------------------------------+
| 0 |
+---------------------------------------+
1 row in set (0.43 sec)
Greșeli frecvente
- Folosești
BENCHMARK()ca să compari interogări întregi. Funcția măsoară doar o expresie; pentru interogări foloseșteEXPLAIN ANALYZE. - Testezi o expresie constantă. Serverul poate calcula o singură dată o expresie care nu se schimbă, iar timpul iese nerealist de mic.
Comenzi înrudite
SLEEP(): Oprește execuția interogării pentru un număr de secunde (poate avea zecimale), apoi returnează 0.FORMAT_PICO_TIME(): Transformă un timp în picosecunde într-un text ușor de citit: 3.50 ns, 250.00 ms, 3.15 min.SHA2(): Calculează suma de control SHA-2 (SHA-224, SHA-256, SHA-384 sau SHA-512) a unui text.