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

Hvordan pg_sleep_for() virker i PostgreSQL

I PostgreSQL kan du bruge pg_sleep_for() funktion til at forsinke udførelse i et givet interval.

Det gør den aktuelle sessions proces i dvale, indtil det angivne interval er udløbet.

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 ser sådan ud:

pg_sleep_for(interval)

Hvor interval er et interval, der angiver intervallet, før processen fortsætter.

Eksempel

Her er et eksempel for at demonstrere dets brug.

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

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 .

Negative værdier

Angivelse af en negativ værdi vil resultere i, at sætningen kører med det samme.

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-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. Hvorfor bruge join i MySQL-forespørgsler i stedet for hvor?

  2. Sådan returneres elementer fra et JSON-array i MariaDB

  3. Samle mellem tabeller i to forskellige databaser?

  4. liste Postgres ENUM type