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 (USERS
49989*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;