sql >> Base de Datos >  >> RDS >> PostgreSQL

Cómo funciona pg_sleep_for() en PostgreSQL

En PostgreSQL, puede usar pg_sleep_for() función para retrasar la ejecución durante un intervalo determinado.

Hace que el proceso de la sesión actual duerma hasta que haya transcurrido el intervalo especificado.

El retraso del sueño será al menos siempre que se especifique. Sin embargo, podría ser más largo dependiendo de factores como la carga del servidor, así como la resolución efectiva del intervalo de suspensión de su plataforma.

Sintaxis

La sintaxis es así:

pg_sleep_for(interval)

Donde interval es un intervalo que especifica el intervalo antes de que continúe el proceso.

Ejemplo

Aquí hay un ejemplo para demostrar su uso.

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

Resultado (usando salida vertical):

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

Usé clock_timestamp() en este ejemplo, porque cambia durante la ejecución de la declaración. Esto nos permite ver los valores actualizados a medida que avanza la declaración.

Usé la visualización expandida (a veces denominada "salida vertical") en este ejemplo para que sea más fácil ver el resultado.

Puede alternar la visualización expandida en psql usando \x .

Valores negativos

Si proporciona un valor negativo, la sentencia se ejecutará inmediatamente.

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

Resultado (usando salida vertical):

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