sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man pausar exekveringen av ett uttalande i PostgreSQL

PostgreSQL innehåller tre funktioner som låter dig fördröja exekveringen av serverprocessen. verkställandet av ett uttalande.

Med andra ord kan du köra ett uttalande och få det att pausa halvvägs innan du fortsätter på sin glada väg.

De tre funktionerna är:

  • pg_sleep()
  • pg_sleep_for()
  • pg_sleep_until()

Dessa är alla väldigt lika, men de fungerar på lite olika sätt.

Nedan finns exempel på var och en.

Exempel – pg_sleep()

pg_sleep() funktionen gör att den aktuella sessionens process vilar tills ett visst antal sekunder har gått.

Du anger sekunderna som ett argument. Argumentet är ett värde på dubbel precision , så att du kan ge bråkdelar av sekunder om det behövs.

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

Resultat (med vertikal utdata):

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

Exempel – pg_sleep_for()

pg_sleep_for() funktion är en bekvämlighetsfunktion för längre sömntider som anges som ett intervall.

SELECT 
  clock_timestamp(),
  pg_sleep_for('2 minutes 10 seconds'),
  clock_timestamp(),
  pg_sleep_for('1 minute 5 seconds'),
  clock_timestamp();

Resultat (med vertikal utdata):

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

Exempel – pg_sleep_until()

pg_sleep_until() funktion är en bekvämlighetsfunktion bekvämlighetsfunktion för när en specifik väckningstid önskas.

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 16:25:15.1234'),
  clock_timestamp();

Resultat (med vertikal utdata):

clock_timestamp | 2020-06-28 16:24:28.900319+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 16:25:15.184042+10

Fördröjningens precision

När du använder dessa funktioner kan den faktiska tidsfördröjningen variera från den angivna tiden beroende på aktivitetsnivån på servern. Sömnfördröjningen kommer dock att vara minst så lång som specificerats.

I synnerhet pg_sleep_until är inte garanterat att vakna exakt vid den angivna tiden, men den kommer inte att vakna tidigare.


  1. Släpp Unik begränsning från MySQL-tabellen

  2. Hur man migrerar en Oracle-databas från AWS EC2 till AWS RDS

  3. Bas 36 till Base 10 konvertering med endast SQL

  4. Varför datasäkerhetskopiering är viktigt för din organisation