🧚 Dengar! Beekeeper Studio adalah GUI database yang cepat, modern, dan open source Unduh
17 Juli 2024 Oleh Matthew Rathbone

Anda dapat menghentikan session yang bermasalah menggunakan fungsi pg_terminate_backend.

SELECT pg_terminate_backend(PID);

Mengidentifikasi Query yang Berjalan Lama

Sebelum menghentikan session di PostgreSQL, Anda perlu tahu session mana yang menjadi target. Untuk menemukan query yang berjalan lama, Anda dapat menggunakan view pg_stat_activity dan memfilter berdasarkan kolom state dan query_start.

SELECT pid, usename, state, query, now() - query_start AS duration
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC;

Output yang Diharapkan:

pid usename state query duration
1236 appuser active UPDATE orders SET status=’paid’; 00:20:34
1234 postgres active SELECT * FROM users; 00:05:12

Menghentikan Session

Setelah mengidentifikasi session yang bermasalah, Anda dapat menghentikannya menggunakan fungsi pg_terminate_backend.

SELECT pg_terminate_backend(1236);

Perintah ini secara paksa memutus koneksi ke backend. Perintah ini mengirim sinyal SIGTERM ke proses dan memungkinkannya berhenti dengan aman, sehingga proses mendapat kesempatan terakhir untuk melakukan pembersihan sebelum berhenti. Sebelum menjalankan perintah ini, pastikan Anda memeriksa jenis query yang sedang berjalan dan mempertimbangkan output-nya.

Mengotomatiskan Penghentian Session

Untuk lingkungan yang sering mengalami masalah session, Anda dapat mengotomatiskan penghentian session menggunakan script. Berikut contoh script dasar untuk menghentikan query yang berjalan lama:

DO $$ 
DECLARE
    r RECORD;
BEGIN
    FOR r IN
        SELECT pid 
        FROM pg_stat_activity 
        WHERE state = 'active' 
        AND now() - query_start > interval '10 minutes'
    LOOP
        PERFORM pg_terminate_backend(r.pid);
    END LOOP;
END $$;

Script ini akan menghentikan setiap session aktif yang telah berjalan lebih dari 10 menit.

Menggunakan fungsi pg_cancel_backend

Terkadang, Anda tidak ingin menghentikan session, melainkan hanya membatalkan query yang sedang dijalankan oleh session tersebut. Dalam kasus seperti ini, Anda dapat menggunakan fungsi pg_cancel_backend.

SELECT pg_cancel_backend(PID);

Ganti PID dengan process ID dari session yang menjalankan query yang ingin Anda batalkan.

Perintah ini mengirim SIGINT ke proses untuk membatalkan query. Cara ini tidak sekasar pg_terminate_backend, dan session tetap hidup meskipun query yang sedang berjalan dibatalkan.

Ingat, pg_cancel_backend maupun pg_terminate_backend memerlukan akses superuser. Jika session yang ingin Anda hentikan atau batalkan milik superuser, Anda memerlukan hak akses superuser agar perintah ini berhasil dijalankan.

Kesimpulan

Sekarang Anda sudah tahu cara menghentikan session di PostgreSQL. Mengelola session di PostgreSQL adalah keterampilan penting bagi administrator database. Dengan mengidentifikasi dan menghentikan session bermasalah secara efektif, Anda dapat menjaga performa dan keandalan database PostgreSQL Anda dengan lebih baik. Gunakan perintah ini dengan bijak, karena penyalahgunaannya dapat mengganggu proses data yang penting dan membahayakan integritas database PostgreSQL Anda.

Artikel lain yang mungkin Anda sukai:

Beekeeper Studio Adalah GUI Database Gratis & Open Source

Tool query & editor SQL terbaik yang pernah saya pakai. Semua yang saya butuhkan untuk mengelola database ada di sini. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio cepat, intuitif, dan mudah digunakan. Beekeeper mendukung banyak sekali database, dan berjalan mulus di Windows, Mac, dan Linux.

Versi Linux Beekeeper punya fitur 100% lengkap, tanpa potong kompas, tanpa kompromi fitur.

Apa Kata Pengguna Tentang Beekeeper Studio

★★★★★
"Beekeeper Studio sepenuhnya menggantikan workflow SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tetapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Workflow SQL Anda?

download Unduh Gratis