sql >> Database >  >> RDS >> PostgreSQL

Hoe pg_sleep_for() werkt in PostgreSQL

In PostgreSQL kunt u de pg_sleep_for() functie om de uitvoering voor een bepaald interval te vertragen.

Het maakt het proces van de huidige sessie in de slaapstand totdat het gespecificeerde interval is verstreken.

De slaapvertraging is minstens zolang aangegeven. Het kan echter langer zijn, afhankelijk van factoren zoals serverbelasting en de effectieve resolutie van het slaapinterval van uw platform.

Syntaxis

De syntaxis gaat als volgt:

pg_sleep_for(interval)

Waar interval is een interval dat het interval specificeert voordat het proces doorgaat.

Voorbeeld

Hier is een voorbeeld om het gebruik te demonstreren.

\x
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 15:14:26.53039+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 15:16:36.595837+10
pg_sleep_for    |
clock_timestamp | 2020-06-28 15:17:41.671152+10

Ik gebruikte clock_timestamp() in dit voorbeeld, omdat het verandert tijdens de uitvoering van de instructie. Hierdoor kunnen we de bijgewerkte waarden zien naarmate het statement vordert.

Ik heb in dit voorbeeld een uitgebreide weergave gebruikt (soms "verticale uitvoer" genoemd) om het resultaat gemakkelijker te kunnen zien.

U kunt de uitgebreide weergave in psql schakelen met \x .

Negatieve waarden

Als u een negatieve waarde opgeeft, wordt de instructie onmiddellijk uitgevoerd.

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-29 09:01:09.468232+10
pg_sleep_for    |
clock_timestamp | 2020-06-29 09:01:09.468291+10
pg_sleep_for    |
clock_timestamp | 2020-06-29 09:01:09.468297+10

  1. Hoe een UPSERT uit te voeren zodat ik zowel nieuwe als oude waarden in update-gedeelte kan gebruiken

  2. SQL Server-fout 113:eindcommentaar '*/' ontbreekt

  3. SQL SELECTEER MIN

  4. Een overzicht van caching voor PostgreSQL