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

Menghentikan Query

Sebelum menghentikan query, Anda perlu mengetahui query mana yang menimbulkan masalah. Gunakan SQL berikut untuk menampilkan semua query yang sedang berjalan beserta durasinya:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

Output yang Diharapkan:

pid user_name starttime query elapsed
123 admin 2023-10-01 10:00:00 SELECT * FROM ? 01:20:15
456 analyst 2023-10-01 10:45:00 UPDATE table ? 00:35:10
… … … … …

Kolom elapsed menunjukkan berapa lama query sudah berjalan.

Setelah Anda menemukan query yang bermasalah (menggunakan pid dari daftar di atas), Anda bisa menghentikannya. Gunakan perintah berikut:

CANCEL pid;

Contoh:

CANCEL 123;

Memastikan Query Sudah Dihentikan

Untuk memastikan query sudah dihentikan, jalankan ulang query awal:

SELECT
    pid,
    user_name,
    starttime,
    query,
    elapsed
FROM
    stv_recents
WHERE
    state = 'Running'
ORDER BY
    elapsed DESC;

Query yang dihentikan seharusnya tidak lagi muncul di hasil.

Menangani Query yang Terblokir

Terkadang query terblokir dan perlu dihentikan agar resource-nya dilepaskan. Anda bisa menemukan query yang terblokir menggunakan tabel STV_BLOCKED.

SELECT
    b.pid,
    b.user_name,
    b.db,
    b.query,
    l.pid AS blocked_by_pid,
    l.user_name AS blocked_by_user
FROM
    stv_blocked b
JOIN
    stv_locks l
ON
    b.lock_owner_pid = l.pid;

Output yang Diharapkan:

pid user_name db query blocked_by_pid blocked_by_user
5678 analytics reporting SELECT count(*) FROM ?; 9101 Admin

Untuk menghentikan query yang terblokir, gunakan perintah CANCEL seperti yang ditunjukkan sebelumnya:

CANCEL 5678;

Mengotomatiskan Penghentian Query

Untuk database dengan kebutuhan performa yang ketat, mengotomatiskan deteksi dan penghentian query yang berjalan lama bisa sangat membantu. Berikut contoh prosedur untuk menghentikan query yang berjalan melebihi batas waktu tertentu:

DO $$ 
DECLARE
    long_running_query RECORD;
BEGIN
    FOR long_running_query IN
        SELECT pid
        FROM stv_recents
        WHERE state = 'Running'
        AND elapsed > interval '00:30:00' -- Replace with desired threshold
    LOOP
        EXECUTE 'CANCEL ' || long_running_query.pid;
    END LOOP;
END;
$$;

Hal Penting yang Perlu Diperhatikan

  • Izin: Hanya pengguna dengan izin yang sesuai yang dapat membatalkan query.
  • Dampak: Menghentikan query dapat memengaruhi performa aplikasi atau menyebabkan inkonsistensi data jika dilakukan dengan cara yang salah.
  • Pemantauan: Memantau performa query secara rutin membantu mendeteksi masalah lebih awal.

Kesimpulan

Mengelola query yang berjalan lama secara efektif dapat menjaga performa cluster Amazon Redshift Anda tetap optimal. Dengan mengikuti langkah-langkah ini, Anda bisa dengan cepat menemukan dan menghentikan query yang bermasalah. Menerapkan solusi otomatis untuk pemantauan rutin dan penghentian query dapat semakin membantu menjaga performa.

Pastikan untuk menguji semua perintah dan script di lingkungan non-produksi sebelum menerapkannya ke produksi agar tidak terjadi gangguan yang tidak disengaja.

Artikel lain yang mungkin Anda suka:

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 benar-benar menggantikan alur kerja SQL lama saya. Cepat, intuitif, dan membuat pekerjaan database kembali menyenangkan."
— Alex K., Database Developer
★★★★★
"Saya sudah mencoba banyak GUI database, tapi Beekeeper punya keseimbangan sempurna antara fitur dan kesederhanaan. Langsung berfungsi."
— Sarah M., Full Stack Engineer

Siap Meningkatkan Alur Kerja SQL Anda?

download Unduh Gratis