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.