PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak działa pg_sleep() w PostgreSQL

W PostgreSQL możesz użyć pg_sleep() funkcja opóźnienia wykonania o określoną liczbę sekund.

Powoduje uśpienie procesu bieżącej sesji, aż upłynie określona liczba sekund. Działa podobnie do funkcji sleep() w MySQL funkcja, a także waitfor TSQL instrukcja w SQL Server.

pg_sleep() funkcja akceptuje podwójną precyzję argumentu, dzięki czemu można również określić opóźnienia w ułamkach sekund.

Opóźnienie snu wyniesie co najmniej tak długo, jak określono. Może to jednak być dłuższe w zależności od takich czynników, jak obciążenie serwera, a także efektywna rozdzielczość interwału uśpienia Twojej platformy.

Składnia

Składnia jest dość prosta:

pg_sleep(seconds)

Gdzie seconds to podwójna precyzja wartość określająca, ile sekund/ułamków sekund musi upłynąć, zanim proces będzie kontynuowany.

Przykład

Oto przykład demonstrujący jego użycie.

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

Wynik (przy użyciu wyjścia pionowego):

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

Użyłem clock_timestamp() w tym przykładzie, ponieważ zmienia się podczas wykonywania instrukcji. Dzięki temu możemy zobaczyć zaktualizowane wartości w miarę postępów w instrukcji.

Użyłem rozszerzonego wyświetlania (czasami określanego jako „wyjście pionowe”) w tym przykładzie, aby ułatwić zobaczenie wyniku.

Możesz przełączać rozszerzone wyświetlanie w psql za pomocą \x .

Sekundy ułamkowe

Jak wspomniano, w razie potrzeby możesz określić opóźnienia w ułamkach sekund.

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

Wynik (przy użyciu wyjścia pionowego):

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

Wartości ujemne

Wartości ujemne nie spowodują opóźnienia wykonania.

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

Wynik (przy użyciu wyjścia pionowego):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykryć zapytanie blokujące blokadę w Postgresie?

  2. postgresql date_trunc do dowolnej precyzji?

  3. Dziedziczenie PostgreSQL z JPA, Hibernate

  4. Naprawianie uszkodzonej tabeli TOAST

  5. Zapytanie PostgreSQL do liczenia/grupowania według dnia i wyświetlania dni bez danych