MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

Wie SLEEP() in MariaDB funktioniert

In MariaDB, SLEEP() ist eine integrierte Funktion, die für die durch ihr Argument angegebene Anzahl von Sekunden schläft (pausiert).

Wenn es nicht unterbrochen wird, gibt es 0 zurück , wenn es unterbrochen wird, gibt es 1 zurück .

Syntax

Die Syntax lautet wie folgt:

SLEEP(duration)

Wobei duration ist die Anzahl der Sekunden, für die die Funktion schlafen soll. Dies kann Mikrosekunden umfassen.

Beispiel 1

Hier ist ein Beispiel zur Veranschaulichung:

SELECT SLEEP(3);

Ergebnis:

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

In diesem Fall war die Operation ohne Unterbrechung erfolgreich, also 0 wurde zurückgegeben.

Wir können sehen, dass die Operation 3,005 Sekunden dauerte, bis sie abgeschlossen war (von denen 3 vermutlich durch SLEEP() verursacht wurden Funktion).

Beispiel 2

Hier ist ein weiteres Beispiel, das SLEEP() verwendet zwischen zwei anderen Funktionsaufrufen:

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

Ergebnis:

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)

Mikrosekunden

Wie bereits erwähnt, können Sie Mikrosekunden einfügen:

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

Ergebnis:

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)

Null-Argument

Aufruf von SLEEP() mit null gibt 0 zurück ohne Pause:

SELECT SLEEP(null);

Ergebnis:

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

Ungültige Anzahl von Argumenten

Aufruf von SLEEP() ohne Argumente oder mit der falschen Anzahl von Argumenten führt zu einem Fehler:

SELECT SLEEP();

Ergebnis:

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

Und:

SELECT SLEEP(1, 2);

Ergebnis:

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

Beachten Sie, dass Anweisungen mit SLEEP() Funktion sind für die Replikation nicht sicher.