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

Come mettere in pausa l'esecuzione di un'istruzione in PostgreSQL

PostgreSQL include tre funzioni che consentono di ritardare l'esecuzione del processo del server. l'esecuzione di una dichiarazione.

In altre parole, puoi eseguire un'istruzione e metterla in pausa a metà, prima di continuare per la sua strada allegra.

Le tre funzioni sono:

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

Sono tutti molto simili, ma funzionano in modi leggermente diversi.

Di seguito sono riportati esempi di ciascuno.

Esempio – pg_sleep()

Il pg_sleep() la funzione rende il processo della sessione corrente inattivo fino a quando non è trascorso un numero specificato di secondi.

Specificare i secondi come argomento. L'argomento è un valore di doppia precisione , quindi puoi fornire frazioni di secondi se necessario.

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

Risultato (usando l'output verticale):

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

Esempio – pg_sleep_for()

Il pg_sleep_for() è una funzione comoda per tempi di sonno più lunghi specificati come intervallo.

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

Esempio – pg_sleep_until()

Il pg_sleep_until() La funzione è una funzione comfort funzione comfort per quando si desidera un orario di sveglia specifico.

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

Risultato (usando l'output verticale):

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

Precisione del ritardo

Quando si utilizzano queste funzioni, il ritardo effettivo può variare rispetto al tempo specificato a seconda del livello di attività del server. Tuttavia, il ritardo del sonno sarà almeno lungo quanto specificato.

In particolare, pg_sleep_until non è garantito che si svegli esattamente all'ora specificata, ma non si sveglierà prima.