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

Cómo funciona pg_sleep() en PostgreSQL

En PostgreSQL, puede usar pg_sleep() función para retrasar la ejecución durante un número determinado de segundos.

Hace que el proceso de la sesión actual duerma hasta que haya transcurrido el número especificado de segundos. Funciona de forma similar a sleep() de MySQL. función, y también waitfor de TSQL declaración en SQL Server.

El pg_sleep() la función acepta una doble precisión argumento, por lo que también puede especificar retrasos de fracciones de segundo.

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 bastante simple:

pg_sleep(seconds)

Donde seconds es una doble precisión valor que especifica cuántos segundos/fracciones de segundo deben pasar antes de que continúe el proceso.

Ejemplo

Aquí hay un ejemplo para demostrar su uso.

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

Resultado (usando salida vertical):

clock_timestamp | 2020-06-28 13:46:53.808072+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:54.870423+10
pg_sleep        |
clock_timestamp | 2020-06-28 13:46:55.938278+10

Usé clock_timestamp() en este ejemplo, porque cambia durante la ejecución de la instrucció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 .

Segundos fraccionarios

Como se mencionó, puede especificar retrasos de fracciones de segundo si es necesario.

SELECT 
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp(),
  pg_sleep(.5),
  clock_timestamp();

Resultado (usando salida vertical):

clock_timestamp | 2020-06-28 15:03:52.496211+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.041063+10
pg_sleep        |
clock_timestamp | 2020-06-28 15:03:53.553291+10

Valores negativos

Los valores negativos no provocarán ningún retraso en la ejecución.

SELECT 
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp(),
  pg_sleep(-1),
  clock_timestamp();

Resultado (usando salida vertical):

clock_timestamp | 2020-06-29 09:03:19.056681+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056682+10
pg_sleep        |
clock_timestamp | 2020-06-29 09:03:19.056683+10