sql >> Database >  >> RDS >> PostgreSQL

De uitvoering van een instructie in PostgreSQL pauzeren

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.


  1. sql server ongeldige objectnaam - maar tabellen worden vermeld in SSMS-tabellenlijst

  2. Wat zijn de beperkingen van MS Access?

  3. Tips voor het bewaken van PostgreSQL voor Moodle

  4. Hoe PBKDF2 te gebruiken in Oracle 12c?