PostgreSQL menyertakan tiga fungsi yang memungkinkan Anda menunda eksekusi proses server. pelaksanaan suatu pernyataan.
Dengan kata lain, Anda dapat menjalankan pernyataan dan menghentikannya di tengah jalan, sebelum melanjutkan perjalanannya yang menyenangkan.
Ketiga fungsi tersebut adalah:
pg_sleep()
pg_sleep_for()
pg_sleep_until()
Semuanya sangat mirip, tetapi cara kerjanya sedikit berbeda.
Di bawah ini adalah contoh masing-masing.
Contoh – pg_sleep()
pg_sleep()
fungsi membuat proses sesi saat ini tidur hingga jumlah detik yang ditentukan telah berlalu.
Anda menentukan detik sebagai argumen. Argumennya adalah nilai presisi ganda , sehingga Anda dapat memberikan pecahan detik jika diperlukan.
\x
SELECT
clock_timestamp(),
pg_sleep(1),
clock_timestamp(),
pg_sleep(1),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
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
Contoh – pg_sleep_for()
pg_sleep_for()
fungsi adalah fungsi kenyamanan untuk waktu tidur yang lebih besar yang ditentukan sebagai interval.
SELECT
clock_timestamp(),
pg_sleep_for('2 minutes 10 seconds'),
clock_timestamp(),
pg_sleep_for('1 minute 5 seconds'),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
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
Contoh – pg_sleep_until()
pg_sleep_until()
fungsi adalah fungsi kenyamanan fungsi kenyamanan ketika waktu bangun tertentu diinginkan.
SELECT
clock_timestamp(),
pg_sleep_until('today 16:25:15.1234'),
clock_timestamp();
Hasil (menggunakan keluaran vertikal):
clock_timestamp | 2020-06-28 16:24:28.900319+10 pg_sleep_until | clock_timestamp | 2020-06-28 16:25:15.184042+10
Presisi Penundaan
Saat menggunakan fungsi ini, waktu tunda yang sebenarnya dapat bervariasi dari waktu yang ditentukan tergantung pada tingkat aktivitas server. Namun, penundaan tidur setidaknya selama yang ditentukan.
Khususnya, pg_sleep_until
tidak dijamin untuk bangun tepat pada waktu yang ditentukan, tetapi tidak akan bangun lebih awal.