PostgreSQL indeholder tre funktioner, der giver dig mulighed for at forsinke udførelsen af serverprocessen. udførelsen af en erklæring.
Med andre ord kan du køre en erklæring og få den til at pause halvvejs igennem, før du fortsætter på sin lystige vej.
De tre funktioner er:
pg_sleep()
pg_sleep_for()
pg_sleep_until()
Disse er alle meget ens, men de fungerer på lidt forskellige måder.
Nedenfor er eksempler på hver enkelt.
Eksempel – pg_sleep()
pg_sleep()
funktionen får den aktuelle sessions proces til at sove, indtil der er gået et bestemt antal sekunder.
Du angiver sekunderne som et argument. Argumentet er en værdi af dobbelt præcision , så du kan give brøkdele af sekunder, hvis det kræves.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Resultat (ved hjælp af lodret output):
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
Eksempel – pg_sleep_for()
pg_sleep_for()
funktion er en bekvemmelighedsfunktion til større søvntider angivet som et interval.
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Resultat (ved hjælp af lodret output):
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
Eksempel – pg_sleep_until()
pg_sleep_until()
funktion er en bekvemmelighedsfunktion bekvemmelighedsfunktion til når der ønskes et bestemt vækketidspunkt.
SELECT
clock_timestamp(),
pg_sleep_until('today 16:25:15.1234'),
clock_timestamp();
Resultat (ved hjælp af lodret output):
clock_timestamp | 2020-06-28 16:24:28.900319+10 pg_sleep_until | clock_timestamp | 2020-06-28 16:25:15.184042+10
Forsinkelsens præcision
Når du bruger disse funktioner, kan den faktiske tidsforsinkelse variere fra den angivne tid afhængigt af serverens aktivitetsniveau. Søvnforsinkelsen vil dog være mindst så lang som angivet.
Især pg_sleep_until
er ikke garanteret at vågne præcist på det angivne tidspunkt, men det vil ikke vågne tidligere.