Batalkan kueri - Amazon Redshift

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

Batalkan kueri

Jika Anda menjalankan kueri yang memakan waktu terlalu lama atau menghabiskan sumber daya yang berlebihan, batalkan kueri. Misalnya, buat daftar penjual tiket yang mencakup nama penjual dan jumlah tiket yang terjual. Query berikut memilih data dari SALES tabel dan tabel dan bergabung dengan dua USERS tabel dengan mencocokkan SELLERID dan USERID dalam klausa. WHERE

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users WHERE sales.sellerid = users.userid GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

Hasilnya terlihat seperti berikut ini.

sellerid | firstname | lastname | sum ----------+-----------+----------+------ 48950 | Nayda | Hood | 184 19123 | Scott | Simmons | 164 20029 | Drew | Mcguire | 164 36791 | Emerson | Delacruz | 160 13567 | Imani | Adams | 156 9697 | Dorian | Ray | 156 41579 | Harrison | Durham | 156 15591 | Phyllis | Clay | 152 3008 | Lucas | Stanley | 148 44956 | Rachel |Villarreal| 148
catatan

Ini adalah kueri yang kompleks. Untuk tutorial ini, Anda tidak perlu khawatir tentang bagaimana query ini dibangun.

Query sebelumnya berjalan dalam hitungan detik dan mengembalikan 2.102 baris.

Misalkan Anda lupa memasukkan WHERE klausa.

SELECT sellerid, firstname, lastname, sum(qtysold) FROM sales, users GROUP BY sellerid, firstname, lastname ORDER BY 4 desc;

Set hasil mencakup semua baris dalam tabel dikalikan dengan semua baris dalam SALES tabel (USERS49989*3766). Ini disebut bergabung Cartesian, dan itu tidak direkomendasikan. Hasilnya lebih dari 188 juta baris dan membutuhkan waktu lama untuk dijalankan.

Untuk membatalkan kueri yang sedang berjalan, gunakan CANCEL perintah dengan ID sesi kueri. Dengan editor kueri Amazon Redshift v2 Anda dapat membatalkan kueri dengan memilih tombol batal saat kueri sedang berjalan.

Untuk menemukan ID sesi, mulai sesi baru dan kueri RECENTS tabel STV _, seperti yang ditunjukkan pada langkah sebelumnya. Contoh berikut menunjukkan bagaimana Anda dapat membuat hasil lebih mudah dibaca. Untuk melakukan ini, gunakan TRIM fungsi untuk memangkas spasi tambahan dan hanya menampilkan 20 karakter pertama dari string kueri.

Untuk menentukan ID sesi dari kueri yang sedang berjalan, jalankan SELECT pernyataan berikut.

SELECT user_id, session_id, start_time, query_text FROM sys_query_history WHERE status='running';

Hasilnya terlihat seperti berikut ini.

user_id | session_id | start_time | query_text ---------+---------------+----------------------------+---------------------------------------------------------------- 100 | 1073791534 | 2024-03-19 22:26:21.205739 | SELECT user_id, session_id, start_time, query_text FROM ...

Untuk membatalkan kueri dengan ID sesi1073791534, jalankan perintah berikut.

CANCEL 1073791534;
catatan

CANCELPerintah tidak menghentikan transaksi. Untuk menghentikan atau memutar kembali transaksi, gunakan ROLLBACK perintah ABORT atau. Untuk membatalkan kueri yang terkait dengan transaksi, pertama-tama batalkan kueri lalu hentikan transaksi.

Jika kueri yang Anda batalkan dikaitkan dengan transaksi, gunakan ROLLBACK perintah ABORT atau untuk membatalkan transaksi dan membuang setiap perubahan yang dibuat pada data:

ABORT;

Kecuali Anda masuk sebagai pengguna super, Anda hanya dapat membatalkan pertanyaan Anda sendiri. Superuser dapat membatalkan semua kueri.

Jika alat kueri Anda tidak mendukung kueri yang berjalan secara bersamaan, mulailah sesi lain untuk membatalkan kueri.

Untuk informasi selengkapnya tentang membatalkan kueri, lihat CANCELdi Panduan Pengembang Database Amazon Redshift.

Batalkan kueri menggunakan antrean superuser

Jika sesi Anda saat ini memiliki terlalu banyak kueri yang berjalan secara bersamaan, Anda mungkin tidak dapat menjalankan CANCEL perintah sampai kueri lain selesai. Dalam hal ini, jalankan CANCEL perintah menggunakan antrian kueri manajemen beban kerja yang berbeda.

Dengan menggunakan manajemen beban kerja, Anda dapat menjalankan kueri dalam antrian kueri yang berbeda sehingga Anda tidak perlu menunggu kueri lain selesai. Manajer beban kerja membuat antrian terpisah, yang disebut antrian Superuser, yang dapat Anda gunakan untuk pemecahan masalah. Untuk menggunakan antrian Superuser, masuk ke superuser dan atur grup kueri ke 'superuser' menggunakan perintah. SET Setelah menjalankan perintah Anda, setel ulang grup kueri menggunakan RESET perintah.

Untuk membatalkan kueri menggunakan antrean superuser, jalankan perintah ini.

SET query_group TO 'superuser'; CANCEL 1073791534; RESET query_group;