PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So unterbrechen Sie die Ausführung einer Anweisung in PostgreSQL

PostgreSQL enthält drei Funktionen, mit denen Sie die Ausführung des Serverprozesses verzögern können. die Ausführung einer Aussage.

Mit anderen Worten, Sie können eine Anweisung ausführen und nach der Hälfte pausieren lassen, bevor Sie ihren fröhlichen Weg fortsetzen.

Die drei Funktionen sind:

  • pg_sleep()
  • pg_sleep_for()
  • pg_sleep_until()

Diese sind alle sehr ähnlich, aber sie funktionieren auf leicht unterschiedliche Weise.

Nachfolgend finden Sie jeweils Beispiele.

Beispiel – pg_sleep()

Der pg_sleep() -Funktion versetzt den Prozess der aktuellen Sitzung in den Ruhezustand, bis eine bestimmte Anzahl von Sekunden vergangen ist.

Als Argument geben Sie die Sekunden an. Das Argument ist ein Wert mit doppelter Genauigkeit , sodass Sie bei Bedarf Sekundenbruchteile angeben können.

\x
SELECT 
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp(),
  pg_sleep(1),
  clock_timestamp();

Ergebnis (bei vertikaler Ausgabe):

clock_timestamp | 2020-06-28 16:18:25.645814+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:26.706998+10
pg_sleep        |
clock_timestamp | 2020-06-28 16:18:27.768604+10

Beispiel – pg_sleep_for()

Der pg_sleep_for() Die Funktion ist eine Komfortfunktion für größere Schlafzeiten, die als Intervall angegeben werden.

SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Ergebnis (bei vertikaler Ausgabe):

clock_timestamp | 2020-06-28 16:20:04.218295+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:22:14.222907+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 16:23:19.294483+10

Beispiel – pg_sleep_until()

Der pg_sleep_until() Funktion ist eine Komfortfunktion Komfortfunktion, wenn eine bestimmte Weckzeit gewünscht wird.

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 16:25:15.1234'),
  clock_timestamp();

Ergebnis (bei vertikaler Ausgabe):

clock_timestamp | 2020-06-28 16:24:28.900319+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 16:25:15.184042+10

Präzision der Verzögerung

Bei Verwendung dieser Funktionen kann die tatsächliche Zeitverzögerung je nach Aktivitätsgrad des Servers von der angegebenen Zeit abweichen. Die Schlafverzögerung ist jedoch mindestens so lang wie angegeben.

Insbesondere pg_sleep_until nicht garantiert genau zur angegebenen Zeit aufwacht, aber es wird nicht früher aufwachen.