PostgreSQL bao gồm ba chức năng cho phép bạn trì hoãn quá trình thực thi máy chủ. việc thực hiện một câu lệnh.
Nói cách khác, bạn có thể chạy một câu lệnh và để câu lệnh đó tạm dừng giữa chừng, trước khi tiếp tục hành trình vui vẻ.
Ba chức năng là:
-
pg_sleep()
-
pg_sleep_for()
-
pg_sleep_until()
Tất cả chúng đều rất giống nhau, nhưng chúng hoạt động theo những cách hơi khác nhau.
Dưới đây là các ví dụ về từng cái.
Ví dụ - pg_sleep ()
pg_sleep()
hàm làm cho quy trình của phiên hiện tại ở chế độ ngủ cho đến khi trôi qua một số giây cụ thể.
Bạn chỉ định giây làm đối số. Đối số là giá trị của độ chính xác kép , vì vậy bạn có thể cung cấp giây phân số nếu được yêu cầu.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Kết quả (sử dụng đầu ra dọc):
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
Ví dụ - pg_sleep_for ()
pg_sleep_for()
chức năng là một chức năng thuận tiện cho thời gian ngủ lớn hơn được chỉ định như một khoảng thời gian.
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Kết quả (sử dụng đầu ra dọc):
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
Ví dụ - pg_sleep_until ()
pg_sleep_until()
chức năng là một chức năng tiện lợi chức năng tiện lợi khi bạn muốn một thời gian thức dậy cụ thể.
SELECT
clock_timestamp(),
pg_sleep_until('today 16:25:15.1234'),
clock_timestamp();
Kết quả (sử dụng đầu ra dọc):
clock_timestamp | 2020-06-28 16:24:28.900319+10 pg_sleep_until | clock_timestamp | 2020-06-28 16:25:15.184042+10
Độ chính xác của độ trễ
Khi sử dụng các chức năng này, thời gian trễ thực tế có thể thay đổi so với thời gian được chỉ định tùy thuộc vào mức độ hoạt động của máy chủ. Tuy nhiên, thời gian trễ ngủ ít nhất sẽ kéo dài như được chỉ định.
Đặc biệt, pg_sleep_until
không được đảm bảo sẽ thức dậy chính xác vào thời gian được chỉ định, nhưng nó sẽ không thức dậy sớm hơn.