CANCEL - Amazon Redshift

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

CANCEL

Membatalkan kueri database yang sedang berjalan.

CANCELPerintah 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 untukCANCEL:

  • Superuser membatalkan kueri mereka sendiri

  • Superuser membatalkan kueri pengguna

  • Pengguna dengan hak CANCEL istimewa membatalkan kueri pengguna

  • Pengguna membatalkan kueri mereka sendiri

Sintaks

CANCEL process_id [ 'message' ]

Parameter

process_id

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

Untuk membatalkan kueri yang berjalan di grup kerja Amazon Redshift Tanpa Server, gunakan session_id dari kueri 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. Pengguna super 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 setiap transaksi yang sedang berjalan di sesi yang dihentikan untuk melepaskan semua kunci dan memutar kembali transaksi. Untuk melihat kunci yang saat ini ditahan, kueri tabel STV_LOCKS sistem.

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

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

Untuk menemukan yang baruPID, 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 klaster Amazon Redshift, pertama-tama ambil ID proses untuk kueri yang ingin dibatalkan. Untuk menentukan proses IDs 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 kustom untuk ditampilkan, bukan pesan default. Untuk menentukan pesan kustom, sertakan pesan Anda dalam tanda kutip tunggal di akhir CANCEL perintah:

cancel 802 'Long-running query';

Sesi tempat kueri berjalan menampilkan pesan berikut:

ERROR: Long-running query