sql >> Database >  >> RDS >> PostgreSQL

Hoe pg_sleep() werkt in PostgreSQL

In PostgreSQL kunt u de pg_sleep() functie om de uitvoering een bepaald aantal seconden uit te stellen.

Het maakt het proces van de huidige sessie in de slaapstand totdat het opgegeven aantal seconden is verstreken. Het werkt vergelijkbaar met MySQL's sleep() functie, en ook TSQL's waitfor statement in SQL Server.

De pg_sleep() functie accepteert een dubbele precisie argument, zodat u ook vertragingen van een fractie van een seconde kunt opgeven.

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 is vrij eenvoudig:

pg_sleep(seconds)

Waar seconds is een dubbele precisie waarde die aangeeft hoeveel seconden/fractionele seconden er moeten verstrijken voordat het proces wordt voortgezet.

Voorbeeld

Hier is een voorbeeld om het gebruik te demonstreren.

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

Resultaat (met verticale uitvoer):

clock_timestamp | 2020-06-28 13:46:53.808072+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:54.870423+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:55.938278+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 .

Fractionele seconden

Zoals vermeld, kunt u indien nodig vertragingen van een fractie van een seconde opgeven.

SELECT 
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp();

Resultaat (met verticale uitvoer):

clock_timestamp | 2020-06-28 15:03:52.496211+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.041063+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.553291+10

Negatieve waarden

Negatieve waarden leiden niet tot vertraging in de uitvoering.

SELECT 
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp();

Resultaat (met verticale uitvoer):

clock_timestamp | 2020-06-29 09:03:19.056681+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056682+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056683+10

  1. Hoe de SPACE()-functie werkt in SQL Server (T-SQL)

  2. ASCII()-functie in Oracle

  3. Toegestane geheugengrootte van 8589934592 bytes uitgeput

  4. SQL Server:Isolatieniveau lekken over gepoolde verbindingen