MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona SLEEP() in MariaDB

In MariaDB, SLEEP() è una funzione incorporata che dorme (mette in pausa) per il numero di secondi specificato dal suo argomento.

Se ininterrotto, restituisce 0 , se interrotto, restituisce 1 .

Sintassi

La sintassi è questa:

SLEEP(duration)

Dove duration è il numero di secondi per i quali si desidera che la funzione rimanga inattiva. Questo può includere microsecondi.

Esempio 1

Ecco un esempio da dimostrare:

SELECT SLEEP(3);

Risultato:

+----------+
| SLEEP(3) |
+----------+
|        0 |
+----------+
1 row in set (3.005 sec)

In questo caso, l'operazione è riuscita senza interruzioni, quindi 0 è stato restituito.

Possiamo vedere che l'operazione ha richiesto 3.005 secondi per essere completata (3 dei quali presumibilmente causati da SLEEP() funzione).

Esempio 2

Ecco un altro esempio che utilizza SLEEP() tra altre due chiamate di funzione:

SELECT CURTIME();
SELECT SLEEP(3);
SELECT CURTIME();

Risultato:

MariaDB [PetHouse]> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 06:22:38  |
+-----------+
1 row in set (0.000 sec)

MariaDB [PetHouse]> SELECT SLEEP(3);
SELECT CURTIME();
+----------+
| SLEEP(3) |
+----------+
|        0 |
+----------+
1 row in set (3.006 sec)

MariaDB [PetHouse]> SELECT CURTIME();
+-----------+
| CURTIME() |
+-----------+
| 06:22:41  |
+-----------+
1 row in set (0.000 sec)

Microsecondi

Come accennato, puoi includere microsecondi:

SELECT CURTIME(6);
SELECT SLEEP(3.555555);
SELECT CURTIME(6);

Risultato:

MariaDB [PetHouse]> SELECT CURTIME(6);
+-----------------+
| CURTIME(6)      |
+-----------------+
| 06:25:41.010538 |
+-----------------+
1 row in set (0.000 sec)

MariaDB [PetHouse]> SELECT SLEEP(3.555555);
SELECT CURTIME(6);
+-----------------+
| SLEEP(3.555555) |
+-----------------+
|               0 |
+-----------------+
1 row in set (3.561 sec)

MariaDB [PetHouse]> SELECT CURTIME(6);
+-----------------+
| CURTIME(6)      |
+-----------------+
| 06:25:44.573544 |
+-----------------+
1 row in set (0.000 sec)

Argomento nullo

Chiamando SLEEP() con null restituisce 0 senza una pausa:

SELECT SLEEP(null);

Risultato:

+-------------+
| SLEEP(null) |
+-------------+
|           0 |
+-------------+
1 row in set (0.000 sec)

Numero di argomenti non valido

Chiamando SLEEP() senza argomenti, o con il numero errato di argomenti, genera un errore:

SELECT SLEEP();

Risultato:

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

E:

SELECT SLEEP(1, 2);

Risultato:

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

Nota che le istruzioni usano SLEEP() funzione non sono sicure per la replica.