PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да поставите на пауза изпълнението на изявление в PostgreSQL

PostgreSQL включва три функции, които ви позволяват да забавите изпълнението на сървърния процес. изпълнението на изявление.

С други думи, можете да изпълните изявление и да го поставите на пауза до половината, преди да продължите по веселия си път.

Трите функции са:

  • pg_sleep()
  • pg_sleep_for()
  • pg_sleep_until()

Всички те са много сходни, но работят по малко различни начини.

По-долу са дадени примери за всеки един от тях.

Пример – pg_sleep()

pg_sleep() функцията прави процеса на текущата сесия в спящ режим, докато измине определен брой секунди.

Вие посочвате секундите като аргумент. Аргументът е стойност с двойна точност , така че можете да предоставите частични секунди, ако е необходимо.

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

Резултат (с помощта на вертикален изход):

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

Пример – pg_sleep_for()

pg_sleep_for() функцията е удобна функция за по-големи времена на заспиване, посочени като интервал.

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

Резултат (с помощта на вертикален изход):

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

Пример – pg_sleep_until()

pg_sleep_until() функцията е удобна функция, удобна функция за това, когато се желае конкретно време за събуждане.

SELECT 
  clock_timestamp(),
  pg_sleep_until('today 16:25:15.1234'),
  clock_timestamp();

Резултат (с помощта на вертикален изход):

clock_timestamp | 2020-06-28 16:24:28.900319+10
pg_sleep_until  |
clock_timestamp | 2020-06-28 16:25:15.184042+10

Прецизност на закъснението

Когато използвате тези функции, действителното време закъснение може да варира от определеното време в зависимост от нивото на активност на сървъра. Въпреки това забавянето на заспиването ще бъде поне толкова дълго, колкото е посочено.

По-специално, pg_sleep_until не е гарантирано, че ще се събуди точно в определеното време, но няма да се събуди по-рано.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Еволюция на отказоустойчивостта в PostgreSQL:Пътуване във времето

  2. SQL заявка за получаване на най-новия ред за всеки екземпляр на даден ключ

  3. Изберете редове, които не присъстват в друга таблица

  4. Обединяване на резултати от две отделни бази данни

  5. Как EDB стана лидер на пазара на Postgres