PostgreSQL bevat drie functies waarmee u de uitvoering van het serverproces kunt vertragen. het uitvoeren van een verklaring.
Met andere woorden, u kunt een verklaring uitvoeren en deze halverwege laten pauzeren, voordat u vrolijk verder gaat.
De drie functies zijn:
pg_sleep()
pg_sleep_for()
pg_sleep_until()
Deze lijken allemaal erg op elkaar, maar ze werken op een iets andere manier.
Hieronder staan voorbeelden van elk.
Voorbeeld – pg_sleep()
De pg_sleep()
functie maakt het proces van de huidige sessie in de slaapstand totdat een bepaald aantal seconden is verstreken.
U geeft de seconden op als argument. Het argument is een waarde van dubbele precisie , zodat u indien nodig fractionele seconden kunt opgeven.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Resultaat (met verticale uitvoer):
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
Voorbeeld – pg_sleep_for()
De pg_sleep_for()
functie is een gemaksfunctie voor langere slaaptijden gespecificeerd als een interval.
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Resultaat (met verticale uitvoer):
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
Voorbeeld – pg_sleep_until()
De pg_sleep_until()
functie is een gemaksfunctie gemaksfunctie voor wanneer een specifieke wektijd gewenst is.
SELECT
clock_timestamp(),
pg_sleep_until('today 16:25:15.1234'),
clock_timestamp();
Resultaat (met verticale uitvoer):
clock_timestamp | 2020-06-28 16:24:28.900319+10 pg_sleep_until | clock_timestamp | 2020-06-28 16:25:15.184042+10
Precisie van de vertraging
Bij gebruik van deze functies kan de werkelijke vertraging afwijken van de opgegeven tijd, afhankelijk van het activiteitsniveau van de server. De slaapvertraging zal echter minstens zo lang zijn als gespecificeerd.
In het bijzonder pg_sleep_until
wordt niet gegarandeerd precies op de opgegeven tijd wakker, maar het zal niet eerder wakker worden.