sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan pg_sleep() virker i PostgreSQL

I PostgreSQL kan du bruge pg_sleep() funktion til at forsinke udførelsen i et givet antal sekunder.

Det får den aktuelle sessions proces til at sove, indtil det angivne antal sekunder er gået. Det virker på samme måde som MySQL's sleep() funktion, og også TSQL's waitfor sætning i SQL Server.

pg_sleep() funktion accepterer en dobbelt præcision argument, så du også kan angive forsinkelser på brøk-sekunder.

Søvnforsinkelsen vil være mindst så længe som angivet. Det kan dog være længere, afhængigt af faktorer såsom serverbelastning, samt din platforms effektive opløsning af dvaleintervallet.

Syntaks

Syntaksen er ret enkel:

pg_sleep(seconds)

Hvor seconds er en dobbelt præcision værdi, der angiver, hvor mange sekunder/brøk sekunder, der skal gå, før processen fortsætter.

Eksempel

Her er et eksempel for at demonstrere dets brug.

\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 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

Jeg brugte clock_timestamp() i dette eksempel, fordi det ændres under udførelse af sætningen. Dette giver os mulighed for at se de opdaterede værdier, efterhånden som erklæringen skrider frem.

Jeg brugte udvidet display (nogle gange omtalt som "lodret output") i dette eksempel for at gøre det nemmere at se resultatet.

Du kan skifte udvidet visning i psql ved at bruge \x .

Brøksekunder

Som nævnt kan du angive forsinkelser på brøkdele af sekunder, hvis det er nødvendigt.

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

Resultat (ved hjælp af lodret output):

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

Negative værdier

Negative værdier vil ikke medføre nogen forsinkelse i udførelsen.

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

Resultat (ved hjælp af lodret output):

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. Sådan fungerer age() i PostgreSQL

  2. Tilføj WHERE-sætninger til SQL dynamisk / programmatisk

  3. Sådan opretter du PL/SQL SYS_REFCURSOR i Oracle-databasen

  4. Brug XEvent Profiler til at fange forespørgsler i SQL Server