Aturan pemantauan kueri WLM - Amazon Redshift

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

Aturan pemantauan kueri WLM

Di Amazon Redshift workload management (WLM), aturan pemantauan kueri menentukan batas kinerja berbasis metrik untuk antrian WLM dan menentukan tindakan apa yang harus diambil ketika kueri melampaui batas-batas tersebut. Misalnya, untuk antrian yang didedikasikan untuk kueri berjalan pendek, Anda dapat membuat aturan yang membatalkan kueri yang berjalan selama lebih dari 60 detik. Untuk melacak kueri yang dirancang dengan buruk, Anda mungkin memiliki aturan lain yang mencatat kueri yang berisi loop bersarang.

Anda menentukan aturan pemantauan kueri sebagai bagian dari konfigurasi manajemen beban kerja (WLM) Anda. Anda dapat menentukan hingga 25 aturan untuk setiap antrian, dengan batas 25 aturan untuk semua antrian. Setiap aturan mencakup hingga tiga kondisi, atau predikat, dan satu tindakan. Predikat terdiri dari metrik, kondisi perbandingan (=, <, or >), dan nilai. Jika semua predikat untuk aturan apa pun terpenuhi, tindakan aturan itu dipicu. Tindakan aturan yang mungkin adalah log, hop, dan abort, seperti yang dibahas berikut.

Aturan dalam antrian tertentu hanya berlaku untuk kueri yang berjalan dalam antrian itu. Aturan tidak tergantung pada aturan lain.

WLM mengevaluasi metrik setiap 10 detik. Jika lebih dari satu aturan dipicu selama periode yang sama, WLM memulai tindakan yang paling parah—batalkan, lalu lompat, lalu log. Jika tindakan melompat atau membatalkan, tindakan dicatat dan kueri diusir dari antrian. Jika tindakannya adalah log, kueri terus berjalan dalam antrian. WLM hanya memulai satu tindakan log per kueri per aturan. Jika antrian berisi aturan lain, aturan tersebut tetap berlaku. Jika tindakannya hop dan kueri dirutekan ke antrian lain, aturan untuk antrian baru berlaku. Untuk informasi selengkapnya tentang pemantauan kueri dan tindakan pelacakan yang dilakukan pada kueri tertentu, lihat kumpulan sampel diBekerja dengan akselerasi kueri pendek.

Ketika semua predikat aturan terpenuhi, WLM menulis baris ke tabel sistemSTL_WLM_RULE_ACTION. Selain itu, Amazon Redshift mencatat metrik kueri untuk kueri yang sedang berjalan. STV_QUERY_METRICS Metrik untuk kueri yang diselesaikan disimpan di. STL_QUERY_METRICS

Mendefinisikan aturan pemantauan kueri

Anda membuat aturan pemantauan kueri sebagai bagian dari konfigurasi WLM Anda, yang Anda tentukan sebagai bagian dari definisi grup parameter klaster Anda.

Anda dapat membuat aturan menggunakan AWS Management Console atau secara terprogram menggunakan JSON.

catatan

Jika Anda memilih untuk membuat aturan secara terprogram, kami sangat menyarankan menggunakan konsol untuk menghasilkan JSON yang Anda sertakan dalam definisi grup parameter. Untuk informasi selengkapnya, lihat Membuat atau memodifikasi aturan pemantauan kueri menggunakan konsol dan Mengonfigurasi Nilai Parameter Menggunakan Panduan AWS CLI Manajemen Pergeseran Merah Amazon.

Untuk menentukan aturan pemantauan kueri, Anda menentukan elemen berikut:

  • Nama aturan - Nama aturan harus unik dalam konfigurasi WLM. Nama aturan dapat mencapai 32 karakter alfanumerik atau garis bawah, dan tidak dapat berisi spasi atau tanda kutip. Anda dapat memiliki hingga 25 aturan per antrian, dan batas total untuk semua antrian adalah 25 aturan.

  • Satu atau lebih predikat — Anda dapat memiliki hingga tiga predikat per aturan. Jika semua predikat untuk aturan apa pun terpenuhi, tindakan terkait dipicu. Predikat didefinisikan oleh nama metrik, operator (=, <, or >), dan nilai. Contohnya adalah query_cpu_time > 100000. Untuk daftar metrik dan contoh nilai untuk metrik yang berbeda, lihat Metrik pemantauan kueri untuk Amazon Redshift disediakan berikut di bagian ini.

  • Aksi — Jika lebih dari satu aturan dipicu, WLM memilih aturan dengan tindakan yang paling parah. Tindakan yang mungkin, dalam urutan keparahan yang meningkat, adalah:

    • Log - Rekam informasi tentang kueri dalam tabel sistem STL_WLM_RULE_ACTION. Gunakan tindakan Log saat Anda hanya ingin menulis catatan log. WLM membuat paling banyak satu log per kueri, per aturan. Setelah tindakan log, aturan lain tetap berlaku dan WLM terus memantau kueri.

    • Hop (hanya tersedia dengan WLM manual) - Log tindakan dan lompat kueri ke antrian pencocokan berikutnya. Jika tidak ada antrian lain yang cocok, kueri dibatalkan. QMR hanya membuat pernyataan TABEL AS (CTAS) dan kueri hanya-baca, seperti pernyataan SELECT. Untuk informasi selengkapnya, lihat Antrian kueri WLM melompat.

    • Batalkan — Log tindakan dan batalkan kueri. QMR tidak menghentikan pernyataan COPY dan operasi pemeliharaan, seperti ANALYSIS dan VACUUM.

    • Ubah prioritas (hanya tersedia dengan WLM otomatis) - Ubah prioritas kueri.

Untuk membatasi runtime kueri, sebaiknya buat aturan pemantauan kueri alih-alih menggunakan batas waktu WLM. Misalnya, Anda dapat mengatur max_execution_time ke 50.000 milidetik seperti yang ditunjukkan pada cuplikan JSON berikut.

"max_execution_time": 50000

Namun sebaiknya Anda mendefinisikan aturan pemantauan kueri setara yang disetel query_execution_time ke 50 detik seperti yang ditunjukkan pada cuplikan JSON berikut.

"rules": [ { "rule_name": "rule_query_execution", "predicate": [ { "metric_name": "query_execution_time", "operator": ">", "value": 50 } ], "action": "abort" } ]

Untuk langkah-langkah untuk membuat atau mengubah aturan pemantauan kueri, lihat Membuat atau memodifikasi aturan pemantauan kueri menggunakan konsol dan Properti di Parameter wlm_json_configuration di Panduan Manajemen Amazon Redshift.

Anda dapat menemukan informasi selengkapnya tentang aturan pemantauan kueri dalam topik berikut:

Metrik pemantauan kueri untuk Amazon Redshift disediakan

Tabel berikut menjelaskan metrik yang digunakan dalam aturan pemantauan kueri. (Metrik ini berbeda dari metrik yang disimpan dalam tabel STV_QUERY_METRICS dan STL_QUERY_METRICS sistem.)

Untuk metrik tertentu, ambang kinerja dilacak baik pada tingkat kueri atau tingkat segmen. Untuk informasi selengkapnya tentang segmen dan langkah, lihatPerencanaan kueri dan alur kerja eksekusi.

catatan

Batas waktu WLMParameter ini berbeda dari aturan pemantauan kueri.

Metrik Nama Penjelasan
Waktu kueri CPU query_cpu_time Waktu CPU digunakan oleh kueri, dalam hitungan detik. CPU timeberbeda dariQuery execution time.

Nilai yang valid adalah 0—999.999.

Blok dibaca query_blocks_read Jumlah blok data 1 MB dibaca oleh kueri.

Nilai yang valid adalah 0—1.048.575.

Pindai jumlah baris scan_row_count

Jumlah baris dalam langkah pemindaian. Jumlah baris adalah jumlah total baris yang dipancarkan sebelum memfilter baris yang ditandai untuk dihapus (baris hantu) dan sebelum menerapkan filter kueri yang ditentukan pengguna.

Nilai yang valid adalah 0—999.999.999.999.999.

Waktu eksekusi kueri query_execution_time Waktu eksekusi yang telah berlalu untuk kueri, dalam hitungan detik. Waktu eksekusi tidak termasuk waktu yang dihabiskan menunggu dalam antrian.

Nilai yang valid adalah 0—86.399.

Waktu antrian kueri query_queue_time Waktu yang dihabiskan menunggu dalam antrian, dalam hitungan detik.

Nilai yang valid adalah 0—86.399.

Penggunaan CPU query_cpu_usage_percent Persentase kapasitas CPU yang digunakan oleh query.

Nilai yang valid adalah 0—6.399.

Memori ke disk query_temp_blocks_to_disk Ruang disk sementara digunakan untuk menulis hasil antara, dalam blok 1 MB.

Nilai yang valid adalah 0—319.815.679.

Kemiringan CPU cpu_skew Rasio penggunaan CPU maksimum untuk setiap irisan terhadap penggunaan CPU rata-rata untuk semua irisan. Metrik ini didefinisikan pada tingkat segmen.

Nilai yang valid adalah 0—99.

I/O miring io_skew Rasio pembacaan blok maksimum (I/O) untuk setiap irisan dengan blok rata-rata dibaca untuk semua irisan. Metrik ini didefinisikan pada tingkat segmen.

Nilai yang valid adalah 0—99.

Baris bergabung join_row_count Jumlah baris yang diproses dalam langkah gabungan.

Nilai yang valid adalah 0—999.999.999.999.999.

Loop bersarang bergabung dengan jumlah baris nested_loop_join_row_count Angka atau baris dalam loop bersarang bergabung.

Nilai yang valid adalah 0—999.999.999.999.999.

Mengembalikan jumlah baris return_row_count Jumlah baris yang dikembalikan oleh kueri.

Nilai yang valid adalah 0—999.999.999.999.999.

Waktu eksekusi segmen segment_execution_time Waktu eksekusi berlalu untuk satu segmen, dalam hitungan detik. Untuk menghindari atau mengurangi kesalahan pengambilan sampel, sertakan segment_execution_time > 10 dalam aturan Anda.

Nilai yang valid adalah 0—86.388.

Jumlah baris pemindaian spektrum spectrum_scan_row_count Jumlah baris data di Amazon S3 yang dipindai oleh kueri Amazon Redshift Spectrum.

Nilai yang valid adalah 0—999.999.999.999.999.

Ukuran pemindaian spektrum spectrum_scan_size_mb Ukuran data di Amazon S3, dalam MB, dipindai oleh kueri Amazon Redshift Spectrum.

Nilai yang valid adalah 0—999.999.999.999.999.

Prioritas kueri query_priority Prioritas kueri.

Nilai yang valid adalah HIGHEST, HIGH, NORMAL, LOW, dan LOWEST. Ketika membandingkan query_priority menggunakan operator yang lebih besar dari (>) dan kurang dari (<)HIGH, HIGH lebih besar dariNORMAL, dan seterusnya. HIGHEST

catatan
  • Tindakan hop tidak didukung dengan query_queue_time predikat. Artinya, aturan yang didefinisikan untuk melompat ketika query_queue_time predikat terpenuhi diabaikan.

  • Waktu eksekusi segmen yang pendek dapat mengakibatkan kesalahan pengambilan sampel dengan beberapa metrik, seperti io_skew dan. query_cpu_usage_percent Untuk menghindari atau mengurangi kesalahan pengambilan sampel, sertakan waktu eksekusi segmen dalam aturan Anda. Titik awal yang baik adalahsegment_execution_time > 10.

SVL_QUERY_METRICSTampilan menunjukkan metrik untuk kueri yang diselesaikan. SVL_QUERY_METRICS_SUMMARYTampilan menunjukkan nilai maksimum metrik untuk kueri yang diselesaikan. Gunakan nilai dalam tampilan ini sebagai bantuan untuk menentukan nilai ambang batas untuk mendefinisikan aturan pemantauan kueri.

Metrik pemantauan kueri untuk Amazon Redshift Tanpa Server

Tabel berikut menjelaskan metrik yang digunakan dalam aturan pemantauan kueri untuk Amazon Redshift Tanpa Server.

Metrik Nama Penjelasan
Waktu kueri CPU max_query_cpu_time Waktu CPU digunakan oleh kueri, dalam hitungan detik. CPU timeberbeda dariQuery execution time.

Nilai yang valid adalah 0—999.999.

Blok dibaca max_query_blocks_read Jumlah blok data 1 MB dibaca oleh kueri.

Nilai yang valid adalah 0—1.048.575.

Pindai jumlah baris max_scan_row_count

Jumlah baris dalam langkah pemindaian. Jumlah baris adalah jumlah total baris yang dipancarkan sebelum memfilter baris yang ditandai untuk dihapus (baris hantu) dan sebelum menerapkan filter kueri yang ditentukan pengguna.

Nilai yang valid adalah 0—999.999.999.999.999.

Waktu eksekusi kueri max_query_execution_time

Waktu eksekusi yang telah berlalu untuk kueri, dalam hitungan detik. Waktu eksekusi tidak termasuk waktu yang dihabiskan menunggu dalam antrian. Jika kueri melebihi waktu eksekusi yang ditetapkan, Amazon Redshift Serverless menghentikan kueri.

Nilai yang valid adalah 0—86.399.

Waktu antrian kueri max_query_queue_time Waktu yang dihabiskan menunggu dalam antrian, dalam hitungan detik.

Nilai yang valid adalah 0—86.399.

Penggunaan CPU max_query_cpu_usage_percent Persentase kapasitas CPU yang digunakan oleh query.

Nilai yang valid adalah 0—6.399.

Memori ke disk max_query_temp_blocks_to_disk Ruang disk sementara digunakan untuk menulis hasil antara, dalam blok 1 MB.

Nilai yang valid adalah 0—319.815.679.

Baris bergabung max_join_row_count Jumlah baris yang diproses dalam langkah gabungan.

Nilai yang valid adalah 0—999.999.999.999.999.

Loop bersarang bergabung dengan jumlah baris max_nested_loop_join_row_count Angka atau baris dalam loop bersarang bergabung.

Nilai yang valid adalah 0—999.999.999.999.999.

catatan
  • Tindakan hop tidak didukung dengan max_query_queue_time predikat. Artinya, aturan yang didefinisikan untuk melompat ketika max_query_queue_time predikat terpenuhi diabaikan.

  • Waktu eksekusi segmen yang pendek dapat mengakibatkan kesalahan pengambilan sampel dengan beberapa metrik, seperti max_io_skew dan. max_query_cpu_usage_percent

Templat aturan pemantauan kueri

Saat menambahkan aturan menggunakan konsol Amazon Redshift, Anda dapat memilih untuk membuat aturan dari templat yang telah ditentukan sebelumnya. Amazon Redshift membuat aturan baru dengan serangkaian predikat dan mengisi predikat dengan nilai default. Tindakan default adalah log. Anda dapat memodifikasi predikat dan tindakan untuk memenuhi kasus penggunaan Anda.

Tabel berikut mencantumkan templat yang tersedia.

Nama Templat Predikat Deskripsi
Loop bersarang bergabung nested_loop_join_row_count > 100 Gabungan loop bersarang mungkin menunjukkan predikat gabungan yang tidak lengkap, yang sering menghasilkan set pengembalian yang sangat besar (produk Cartesian). Gunakan jumlah baris rendah untuk menemukan kueri yang berpotensi melarikan diri lebih awal.
Query mengembalikan sejumlah besar baris return_row_count > 1000000 Jika Anda mendedikasikan antrian untuk kueri sederhana yang berjalan singkat, Anda mungkin menyertakan aturan yang menemukan kueri yang mengembalikan jumlah baris tinggi. Template menggunakan default 1 juta baris. Untuk beberapa sistem, Anda mungkin menganggap satu juta baris tinggi, atau dalam sistem yang lebih besar, satu miliar baris atau lebih mungkin tinggi.
Bergabunglah dengan jumlah baris yang tinggi join_row_count > 1000000000 Langkah gabungan yang melibatkan jumlah baris yang luar biasa tinggi mungkin menunjukkan perlunya filter yang lebih ketat. Template menggunakan default 1 miliar baris. Untuk antrean ad hoc (satu kali) yang ditujukan untuk kueri cepat dan sederhana, Anda dapat menggunakan angka yang lebih rendah.
Penggunaan disk yang tinggi saat menulis hasil menengah query_temp_blocks_to_disk > 100000 Saat menjalankan kueri menggunakan lebih dari RAM sistem yang tersedia, mesin eksekusi kueri menulis hasil perantara ke disk (memori tumpah). Biasanya, kondisi ini adalah hasil dari kueri nakal, yang biasanya juga merupakan kueri yang menggunakan ruang disk paling banyak. Ambang batas yang dapat diterima untuk penggunaan disk bervariasi berdasarkan jenis node cluster dan jumlah node. Template menggunakan default 100.000 blok, atau 100 GB. Untuk cluster kecil, Anda mungkin menggunakan angka yang lebih rendah.
Kueri berjalan lama dengan kemiringan I/O tinggi segment_execution_time > 120 dan io_skew > 1.30 Kemiringan I/O terjadi ketika satu irisan node memiliki tingkat I/O yang jauh lebih tinggi daripada irisan lainnya. Sebagai titik awal, kemiringan 1,30 (rata-rata 1,3 kali) dianggap tinggi. Kemiringan I/O tinggi tidak selalu menjadi masalah, tetapi ketika dikombinasikan dengan waktu kueri yang berjalan lama, itu mungkin menunjukkan masalah dengan gaya distribusi atau kunci pengurutan.

Tabel dan tampilan sistem untuk aturan pemantauan kueri

Ketika semua predikat aturan terpenuhi, WLM menulis baris ke tabel sistemSTL_WLM_RULE_ACTION. Baris ini berisi detail untuk kueri yang memicu aturan dan tindakan yang dihasilkan.

Selain itu, Amazon Redshift mencatat metrik kueri tabel dan tampilan sistem berikut.