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. Amazon Redshift menerapkan aturan pemantauan kueri pada tingkat kueri anak saat kueri ditulis ulang secara otomatis. Jika lebih dari satu aturan dipicu selama periode yang sama, WLM memilih aturan dengan tindakan paling parah. Jika tindakan untuk dua aturan memiliki tingkat keparahan yang sama, WLM menjalankan aturan dalam urutan abjad, berdasarkan nama aturan. 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 diAkselerasi kueri pendek.
Ketika semua predikat aturan terpenuhi, WLM menulis baris ke tabel sistemSTL_WLM_RULE_ACTION. Selain itu, Amazon Redshift merekam 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. -
Tindakan — 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 yang setara. Contoh berikut menunjukkan aturan pemantauan query yang ditetapkan query_execution_time
untuk 50 detik:
"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 yang digunakan oleh kueri, dalam hitungan detik. CPU
time berbeda 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 |
catatan
Tindakan hop tidak didukung dengan
query_queue_time
predikat. Artinya, aturan yang didefinisikan untuk melompat ketikaquery_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 time berbeda 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 ketikamax_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 defaultnya 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.
-
STV_QUERY_METRICSTabel menampilkan metrik untuk kueri yang sedang berjalan.
-
STL_QUERY_METRICSTabel mencatat metrik untuk kueri yang diselesaikan.
-
SVL_QUERY_METRICSTampilan menunjukkan metrik untuk kueri yang diselesaikan.
-
SVL_QUERY_METRICS_SUMMARYTampilan menunjukkan nilai maksimum metrik untuk kueri yang diselesaikan.