HOWTO · MySQL

Die richtige Art, den MySQL SLEEP()-Befehl zu verwenden

In diesem Artikel lernen Sie zwei Methoden kennen, die Ihnen zeigen, wie Sie den MySQL-Schlafbefehl verwenden. Die erste beinhaltet die Verwendung von SLEEP() und die zweite ist DO SLEEP(). Außerdem lernen Sie das Verhalten von SLEEP() in einer Abfrageanweisung kennen.

Auf dieser Seite

Dieser Artikel zeigt Ihnen zwei Möglichkeiten, wie Sie den MySQL-Befehl sleep verwenden können. Die erste beinhaltet die Verwendung von SLEEP() und die zweite ist DO SLEEP().

Sie lernen auch das Verhalten von SLEEP() in einer Abfrageanweisung kennen.

Verwendung des SLEEP()-Befehls in MySQL

Im Folgenden erfahren Sie, wie Sie SLEEP() in MySQL verwenden.

SELECT SLEEP(10);

Aus dem obigen SQL nimmt die MySQL-Funktion SLEEP() die Zahl 10 als Parameter. Diese Zahl bestimmt die Anzahl der Sekunden, die SLEEP() im Server-Thread belegt.

Mit SELECT SLEEP(10); kann MySQL zehn Sekunden lang keine anderen Arbeiten erledigen. Das liegt daran, dass der Thread-Stack verbraucht wird.

Das Folgende ist die Ausgabe des vorherigen sleep-Befehls.

+-----------+
| SLEEP(10) |
+-----------+
|         0 |
+-----------+
1 row in set (10.00 sec)

Verwenden Sie den DO SLEEP()-Befehl in MySQL

DO SLEEP() funktioniert genauso wie SLEEP(), gibt aber kein Ergebnis zurück. So funktioniert es.

DO SLEEP(10);

Wie bei SLEEP () wird beim Ausführen des vorherigen SQL 10 Sekunden gewartet, bevor fortgefahren wird. Es gibt jedoch ein leeres Ergebnis zurück, das unten gezeigt wird.

Query OK, 0 rows affected (10.01 sec)

der Unterschied zwischen MySQL SLEEP und DO SLEEP

Der Unterschied zwischen SLEEP() und DO SLEEP() besteht darin, dass SLEEP() ein Ergebnis liefert, während DO SLEEP() dies nicht tut.

das Verhalten von MySQL SLEEP() in einer Abfrageanweisung

Bei Verwendung in einer Abfrageanweisung hängt die Dauer von SLEEP() von den zurückgegebenen Datensätzen ab. Wenn die Tabelle keine Datensätze enthält, schläft MySQL nicht.

Wenn die Tabelle jedoch Datensätze enthält, beträgt die Ruhezeit n * Tabellendatensätze, wobei n die Ruhezeit ist.

Um dies zu beweisen, gehen Sie wie folgt vor.

  1. Erstellen Sie eine Datenbank in MySQL und erstellen Sie eine neue Tabelle in dieser Datenbank.
  2. Fügen Sie einige Datensätze in die Tabelle ein.
  3. Verwenden Sie SELECT *, SLEEP (n) from <table_name>. Wobei n die Ruhezeit und table_name Ihr Tabellenname ist.

Im Folgenden hat die Tabelle users beispielsweise drei Datensätze. Wenn wir den SQL-Code ausführen, wartet MySQL 30 Sekunden.

Das ist number_of_records * sleep_time, also 3 * 10.

SELECT *, SLEEP(10) FROM users;

Ausgabe:

+---------+----------+-----------+
| user_id | username | SLEEP(10) |
+---------+----------+-----------+
|       1 | Delft    |         0 |
|       2 | Stack    |         0 |
|       3 | Website  |         0 |
+---------+----------+-----------+
3 rows in set (30.02 sec)