View a markdown version of this page

CANCEL (BATALKAN) - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

CANCEL (BATALKAN)

Membatalkan kueri database yang sedang berjalan.

Perintah CANCEL memerlukan ID proses atau ID sesi dari kueri yang sedang berjalan dan menampilkan pesan konfirmasi untuk memverifikasi bahwa kueri dibatalkan.

Hak istimewa yang diperlukan

Berikut ini adalah hak istimewa yang diperlukan untuk CANCEL:

  • Superuser membatalkan kueri mereka sendiri

  • Superuser membatalkan kueri pengguna

  • Pengguna dengan hak istimewa CANCEL membatalkan kueri pengguna

  • Pengguna membatalkan kueri mereka sendiri

Sintaksis

CANCEL process_id [ 'message' ]

Parameter

Proses_id

Untuk membatalkan kueri yang berjalan di cluster Amazon Redshift, gunakan pid (ID Proses) STV_TERBARU yang sesuai dengan kueri yang ingin Anda batalkan.

Untuk membatalkan kueri yang berjalan di grup kerja Amazon Redshift Serverless, gunakan session_id dari SYS_QUERY_HISTORY yang sesuai dengan kueri yang ingin Anda batalkan.

'pesan'

Pesan konfirmasi opsional yang ditampilkan saat pembatalan kueri selesai. Jika Anda tidak menentukan pesan, Amazon Redshift menampilkan pesan default sebagai verifikasi. Anda harus melampirkan pesan dalam tanda kutip tunggal.

Catatan penggunaan

Anda tidak dapat membatalkan kueri dengan menentukan ID kueri; Anda harus menentukan ID proses kueri (PID) atau ID sesi. Anda hanya dapat membatalkan kueri yang saat ini dijalankan oleh pengguna Anda. Superuser dapat membatalkan semua kueri.

Jika kueri dalam beberapa sesi menahan kunci pada tabel yang sama, Anda dapat menggunakan PG_TERMINATE_BACKEND fungsi untuk mengakhiri salah satu sesi. Melakukan hal ini memaksa transaksi yang sedang berjalan dalam sesi yang dihentikan untuk melepaskan semua kunci dan mengembalikan transaksi. Untuk melihat kunci yang saat ini dipegang, kueri tabel STV_LOCKS sistem.

Setelah kejadian internal tertentu, Amazon Redshift mungkin memulai ulang sesi aktif dan menetapkan PID baru. Jika PID telah berubah, Anda mungkin menerima pesan kesalahan berikut.

Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.

Untuk menemukan PID baru, kueri tabel STL_RESTARTED_SESSIONS sistem dan filter pada oldpid kolom.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

Contoh

Untuk membatalkan kueri yang sedang berjalan di cluster Amazon Redshift, pertama-tama ambil ID proses untuk kueri yang ingin Anda batalkan. Untuk menentukan ID proses untuk semua kueri yang sedang berjalan, ketik perintah berikut:

select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);

Periksa teks kueri untuk menentukan id proses (PID) mana yang sesuai dengan kueri yang ingin Anda batalkan.

Ketik perintah berikut untuk menggunakan PID 802 untuk membatalkan kueri itu:

cancel 802;

Sesi tempat kueri berjalan menampilkan pesan berikut:

ERROR: Query (168) cancelled on user's request

di 168 mana ID kueri (bukan ID proses yang digunakan untuk membatalkan kueri).

Atau, Anda dapat menentukan pesan konfirmasi khusus untuk ditampilkan alih-alih pesan default. Untuk menentukan pesan khusus, sertakan pesan Anda dalam tanda kutip tunggal di akhir perintah CANCEL:

cancel 802 'Long-running query';

Sesi tempat kueri berjalan menampilkan pesan berikut:

ERROR: Long-running query