PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana pg_sleep() Bekerja di PostgreSQL

Di PostgreSQL, Anda dapat menggunakan pg_sleep() berfungsi untuk menunda eksekusi selama beberapa detik.

Itu membuat proses sesi saat ini tidur sampai jumlah detik yang ditentukan telah berlalu. Ini bekerja mirip dengan sleep() MySQL fungsi, dan juga waitfor TSQL pernyataan di SQL Server.

pg_sleep() fungsi menerima presisi ganda argumen, sehingga Anda juga dapat menentukan penundaan sepersekian detik.

Penundaan tidur akan setidaknya selama yang ditentukan. Namun, ini bisa lebih lama bergantung pada faktor-faktor seperti beban server, serta resolusi efektif interval tidur platform Anda.

Sintaks

Sintaksnya cukup sederhana:

pg_sleep(seconds)

Dimana seconds adalah presisi ganda nilai yang menentukan berapa detik/detik pecahan harus berlalu sebelum proses berlanjut.

Contoh

Berikut ini contoh untuk mendemonstrasikan penggunaannya.

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

Hasil (menggunakan keluaran vertikal):

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

Saya menggunakan clock_timestamp() dalam contoh ini, karena berubah selama eksekusi pernyataan. Hal ini memungkinkan kami untuk melihat nilai yang diperbarui seiring perkembangan pernyataan.

Saya menggunakan tampilan yang diperluas (kadang-kadang disebut sebagai "output vertikal") dalam contoh ini untuk memudahkan melihat hasilnya.

Anda dapat mengaktifkan tampilan yang diperluas di psql dengan menggunakan \x .

Detik Pecahan

Seperti yang disebutkan, Anda dapat menentukan penundaan sepersekian detik jika diperlukan.

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

Hasil (menggunakan keluaran vertikal):

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

Nilai Negatif

Nilai negatif tidak akan menyebabkan penundaan eksekusi.

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

Hasil (menggunakan keluaran vertikal):

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. Cara mengubah array json menjadi baris di postgres

  2. Masalah dengan perintah COPY postgresql dengan Rails di server yang berbeda

  3. DROP FUNCTION tanpa mengetahui jumlah/jenis parameter?

  4. Kunci untuk SELECT sehingga proses lain tidak mendapatkan data lama

  5. PostgreSQL - jumlah maksimum parameter dalam klausa IN?