Navicat Blog

Mengatur Query Timeouts di PostgreSQLL May 5, 2023 by Robert Gravelle

Di bagian atas Navicat Monitor 3 Layar Query Analyzer, ada diagram yang menunjukkan query dengan waktu tunggu terlama:

Screenshot_Navicat_Monitor_LongRunningQueries (102K)

Sangat penting untuk mengidentifikasi query yang lambat karena dapat membuat semuanya mogok hingga melambat.

Selain memperbaiki query yang lambat setelah diidentifikasi, strategi lain mungkin termasuk membatasi waktu eksekusi query di seluruh board. Dalam database kelas profesional seperti PostgreSQL, ada pengaturan untuk membatasi waktu eksekusi query untuk seluruh database atau bahkan per pengguna, melalui variabel statement_timeout. Di blog ini, kita akan belajar cara bekerja dengan variabel database penting ini di Navicat 16 For PostgreSQL.

Mengatur Variabel statement_timeout di Tingkat Database

Mengatur batas waktu pernyataan default untuk database Anda adalah titik awal yang sangat baik. Ini memastikan bahwa setiap aplikasi atau orang yang terhubung ke database tidak akan memiliki query yang berjalan lebih lama dari itu. Default wajar adalah 30 atau 60 detik, tetapi Anda bisa naik lebih tinggi jika mau. Berikut pernyataan yang menetapkan value 60 detik:

ALTER DATABASE mydatabase SET statement_timeout = '60s';

Di Navicat 16 For PostgreSQL kita dapat melihat statement_timeout melalui Tool-tool > Server Monitor > PostgreSQL dari menu utama. Anda akan menemukannya di tab Variabel:

statement_timeout_variable (75K)

Bahkan, Anda mungkin ingin menggunakan Find tool untuk menentukan variabel statement_timeout, karena ada banyak! Anda dapat mengklik tombol Highlight All toggle untuk membantu mengidentifikasi variabel setelah dicocokkan dengan lebih baik.

Tentu saja pernyataan Show juga berfungsi:

show_statement (9K)

Mengatur Query Timeout untuk Pengguna Spesifik

Untuk kontrol yang lebih halus, kita dapat mengatur value query timeout untuk pengguna tertentu (Anda tahu, orang yang selalu memilih keseluruhan database!). Ini dicapai dengan menggunakan pernyataan ALTER ROLE, yang dapat mengatur banyak variabel database, termasuk statement_timeout.

Untuk mencobanya, mari buat role pengguna baru yang disebut "guest":

guest_role (42K)

Sekarang kita dapat menggunakan pernyataan ALTER ROLE untuk membatasi waktu eksekusi query sebagai berikut:

ALTER ROLE guest SET statement_timeout='5min';

Kita dapat meng-query tabel pg_roles untuk mendapatkan informasi tentang statement_timeout (termasuk cara pengaturannya):

select_rolconfig (33K)

Value rolconfig adalah array, jadi kita bisa unnest untuk mendapatkan satu pengaturan per baris:

select_rolconfig_unnest (20K)

Pertimbangan tentang Mengatur Query Timeouts di PostgreSQL

Sangat penting untuk dapat mengidentifikasi query yang lamban karena query tersebut dapat menurunkan performa database Anda menjadi lambat. Untuk itu, ada Navicat Monitor 3 dagram Long Running Queries di bagian atas layar Query Analyzer.

Pendekatan lain adalah membatasi berapa lama query dapat dijalankan sebelum waktu habis. Seperti yang kita lihat di blog hari ini, di PostgreSQL, ini dapat dilakukan di database, sesi, dan bahkan di tingkat role individu.

Jika Anda belum mengatur variabel statement_timeout Anda, saya akan menyarankan Anda untuk melakukannya secepatnya. Ini hanyalah salah satu komponen pengaturan database yang tepat yang akan membantu memastikan instance database Anda tetap sehat dan tersedia.

Tertarik untuk mencoba Navicat 16 For PostgreSQL? Anda dapat mengunduh aplikasi yang berfungsi penuh di sini untuk mendapatkan uji coba 14 hari gratis!

Navicat Blog
Feed Entri
Arsip Blog
Bagikan