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

Come funziona pg_sleep_for() in PostgreSQL

In PostgreSQL, puoi usare pg_sleep_for() funzione per ritardare l'esecuzione per un determinato intervallo.

Sospende il processo della sessione corrente fino allo scadere dell'intervallo specificato.

Il ritardo del sonno sarà almeno finchè specificato. Tuttavia, potrebbe essere più lungo a seconda di fattori quali il carico del server e la risoluzione effettiva dell'intervallo di sospensione da parte della tua piattaforma.

Sintassi

La sintassi è questa:

pg_sleep_for(interval)

Dove interval è un intervallo che specifica l'intervallo prima che il processo continui.

Esempio

Ecco un esempio per dimostrarne l'utilizzo.

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

Risultato (usando l'output verticale):

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

Ho usato clock_timestamp() in questo esempio, perché cambia durante l'esecuzione dell'istruzione. Questo ci permette di vedere i valori aggiornati man mano che l'istruzione avanza.

In questo esempio ho utilizzato la visualizzazione estesa (a volte indicata come "output verticale") per rendere più semplice la visualizzazione del risultato.

Puoi attivare la visualizzazione espansa in psql usando \x .

Valori negativi

Fornire un valore negativo comporterà l'esecuzione immediata dell'estratto conto.

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

Risultato (usando l'output verticale):

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