sql >> Databáze >  >> RDS >> PostgreSQL

Jak funguje pg_sleep() v PostgreSQL

V PostgreSQL můžete použít pg_sleep() funkce pro zpoždění spuštění o daný počet sekund.

Přepne proces aktuální relace do režimu spánku, dokud neuplyne zadaný počet sekund. Funguje podobně jako sleep() MySQL funkce a také waitfor TSQL příkaz v SQL Server.

pg_sleep() funkce přijímá dvojitou přesnost argument, takže můžete také zadat zpoždění ve zlomcích sekund.

Zpoždění spánku bude nejméně tak dlouho, jak je uvedeno. Může však být delší v závislosti na faktorech, jako je zatížení serveru a také efektivní rozlišení intervalu spánku vaší platformy.

Syntaxe

Syntaxe je poměrně jednoduchá:

pg_sleep(seconds)

Kde seconds je dvojitá přesnost hodnota, která určuje, kolik sekund / zlomků sekund musí uplynout, než proces bude pokračovat.

Příklad

Zde je příklad, který demonstruje jeho použití.

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

Výsledek (při použití vertikálního výstupu):

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

Použil jsem clock_timestamp() v tomto příkladu, protože se mění během provádění příkazu. To nám umožňuje vidět aktualizované hodnoty v průběhu příkazu.

V tomto příkladu jsem použil rozšířené zobrazení (někdy označované jako „vertikální výstup“), aby bylo snazší vidět výsledek.

Rozšířené zobrazení v psql můžete přepínat pomocí \x .

Zlomkové sekundy

Jak již bylo zmíněno, v případě potřeby můžete zadat zpoždění ve zlomcích sekund.

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

Výsledek (při použití vertikálního výstupu):

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

Záporné hodnoty

Záporné hodnoty nebudou mít za následek žádné zpoždění při spuštění.

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

Výsledek (při použití vertikálního výstupu):

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

  1. java.sql.SQLException:Vyčerpaná sada výsledků

  2. Java:Reading Blob od Oracle

  3. Jak migrovat databázi Oracle z AWS EC2 na AWS RDS

  4. MySQL Spustí po aktualizaci pouze v případě, že se řádek změnil