Ce face SLEEP()
SLEEP() așteaptă durata cerută și returnează 0. Dacă interogarea este întreruptă (cu KILL QUERY sau prin limita de timp MAX_EXECUTION_TIME) și SLEEP() este singura operație, returnează 1, fără eroare.
Este folosită în teste: pentru a simula o interogare lentă, pentru a verifica limitele de timp sau pentru a testa blocările între două conexiuni. Un argument negativ sau NULL dă eroare în modul SQL strict.
Parametri
| Parametru | Descriere |
|---|---|
secunde |
Durata pauzei, în secunde (de exemplu 0.5). |
Ce returnează
0 la terminare normală, 1 dacă a fost întreruptă.
Exemple
Exemplul 1: O pauză scurtă
SELECT SLEEP(0.5) AS rezultat;
Rezultat
+----------+
| rezultat |
+----------+
| 0 |
+----------+
Exemplul 2: Întreruptă de limita de timp
Indicația MAX_EXECUTION_TIME(100) oprește interogarea după 100 de milisecunde.
SELECT /*+ MAX_EXECUTION_TIME(100) */ SLEEP(2) AS intrerupta;
Rezultat
+------------+
| intrerupta |
+------------+
| 1 |
+------------+
Greșeli frecvente
- Folosești
SLEEP()înWHEREpe un tabel mare. Pauza se repetă pentru fiecare rând verificat, iar interogarea poate dura extrem de mult. - Lași
SLEEP()în cod de producție ca să „aștepți” alte procese. Conexiunea rămâne ocupată; folosește blocări (GET_LOCK()) sau o coadă de sarcini.
Comenzi înrudite
BENCHMARK(): Execută o expresie de un număr de ori, ca să măsori cât de repede o calculează serverul.GET_LOCK(): Ia o blocare cu nume, pe tot serverul; alte conexiuni așteaptă până se eliberează.