Peningkatan kinerja kueri - Amazon Redshift

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

Peningkatan kinerja kueri

Berikut ini adalah beberapa masalah umum yang memengaruhi kinerja kueri Amazon Redshift, dengan petunjuk tentang cara mendiagnosis dan menyelesaikannya.

Statistik tabel hilang atau kedaluwarsa

Jika statistik tabel hilang atau kedaluwarsa, Anda mungkin melihat yang berikut:

  • Pesan peringatan dalam hasil EXPLAIN perintah.

  • Peristiwa peringatan statistik yang hilang di STL _ ALERT _ EVENT _LOG. Untuk informasi selengkapnya, lihat Meninjau peringatan kueri.

Untuk memperbaiki masalah ini, jalankanANALYZE.

Loop Bersarang

Jika loop bersarang ada, Anda mungkin melihat peristiwa peringatan loop bersarang di STL _ _ ALERT _EVENT. LOG Anda juga dapat mengidentifikasi jenis acara ini dengan menjalankan kueri diMengidentifikasi kueri dengan loop bersarang. Untuk informasi selengkapnya, lihat Meninjau peringatan kueri.

Untuk memperbaikinya, tinjau kueri Anda untuk cross-join dan hapus jika memungkinkan. Cross-join adalah gabungan tanpa kondisi gabungan yang menghasilkan produk Cartesian dari dua tabel. Mereka biasanya dijalankan sebagai gabungan loop bersarang, yang merupakan jenis gabungan yang paling lambat.

Hash bergabung

Jika bergabung dengan hash hadir, Anda mungkin melihat yang berikut ini:

Untuk memperbaiki masalah ini, Anda dapat mengambil beberapa pendekatan:

  • Tulis ulang kueri untuk menggunakan gabungan gabungan jika memungkinkan. Anda dapat melakukan ini dengan menentukan kolom gabungan yang merupakan kunci distribusi dan kunci sortir.

  • Jika HJOIN langkah di SVL _ QUERY _ SUMMARY memiliki nilai yang sangat tinggi di bidang baris dibandingkan dengan nilai baris pada RETURN langkah terakhir dalam kueri, periksa apakah Anda dapat menulis ulang kueri untuk bergabung pada kolom unik. Ketika kueri tidak bergabung pada kolom unik, seperti kunci utama, itu meningkatkan jumlah baris yang terlibat dalam gabungan.

Baris hantu atau baris yang tidak terikat

Jika ada baris hantu atau baris yang tidak terikat, Anda mungkin melihat peristiwa peringatan di STL _ _ ALERT EVENT _ LOG yang menunjukkan baris hantu yang berlebihan. Untuk informasi selengkapnya, lihat Meninjau peringatan kueri.

Untuk memperbaiki masalah ini, Anda dapat mengambil beberapa pendekatan:

  • Periksa tab Memuat konsol Amazon Redshift Anda untuk operasi pemuatan aktif di salah satu tabel kueri. Jika Anda melihat operasi beban aktif, tunggu sampai selesai sebelum mengambil tindakan.

  • Jika tidak ada operasi pemuatan aktif, jalankan VACUUM pada tabel kueri untuk menghapus baris yang dihapus.

Baris yang tidak disortir atau disortir

Jika ada baris yang tidak disortir atau disortir, Anda mungkin melihat peristiwa peringatan filter yang sangat selektif di _ _ _. STL ALERT EVENT LOG Untuk informasi selengkapnya, lihat Meninjau peringatan kueri.

Anda juga dapat memeriksa untuk melihat apakah ada tabel dalam kueri Anda memiliki area besar yang tidak disortir dengan menjalankan kueri di. Mengidentifikasi tabel dengan data miring atau baris yang tidak disortir

Untuk memperbaiki masalah ini, Anda dapat mengambil beberapa pendekatan:

  • Jalankan VACUUM pada tabel kueri untuk mengurutkan ulang baris.

  • Tinjau kunci pengurutan pada tabel kueri untuk melihat apakah ada perbaikan yang dapat dilakukan. Ingatlah untuk mempertimbangkan kinerja kueri ini terhadap kinerja kueri penting lainnya dan sistem secara keseluruhan sebelum membuat perubahan apa pun. Untuk informasi selengkapnya, lihat Sortir kunci.

Distribusi data suboptimal

Jika distribusi data kurang optimal, Anda mungkin melihat yang berikut:

Jika tidak ada yang sebelumnya benar, Anda juga dapat melihat apakah salah satu tabel dalam kueri Anda memiliki kemiringan data dengan menjalankan kueri di. Mengidentifikasi tabel dengan data miring atau baris yang tidak disortir

Untuk memperbaiki masalah ini, tinjau gaya distribusi untuk tabel dalam kueri dan lihat apakah ada perbaikan yang dapat dilakukan. Ingatlah untuk mempertimbangkan kinerja kueri ini terhadap kinerja kueri penting lainnya dan sistem secara keseluruhan sebelum membuat perubahan apa pun. Untuk informasi selengkapnya, lihat Distribusi data untuk optimasi kueri.

Memori tidak cukup dialokasikan untuk kueri

Jika memori tidak cukup dialokasikan untuk kueri Anda, Anda mungkin melihat langkah di SVL QUERY _ _ SUMMARY yang memiliki is_diskbased nilai true. Untuk informasi selengkapnya, lihat Menggunakan SUMMARY tampilan SVL QUERY _ _.

Untuk memperbaiki masalah ini, alokasikan lebih banyak memori ke kueri dengan meningkatkan sementara jumlah slot kueri yang digunakannya. Manajemen Beban Kerja (WLM) mencadangkan slot dalam antrian kueri yang setara dengan tingkat konkurensi yang ditetapkan untuk antrian. Misalnya, antrian dengan level konkurensi 5 memiliki 5 slot. Memori yang ditugaskan ke antrian dialokasikan secara merata ke setiap slot. Menetapkan beberapa slot ke satu kueri memberikan akses kueri ke memori untuk semua slot tersebut. Untuk informasi lebih lanjut tentang cara meningkatkan slot sementara untuk kueri, lihatwlm_query_slot_count.

Klausa WHERE suboptimal

Jika WHERE klausa Anda menyebabkan pemindaian tabel yang berlebihan, Anda mungkin melihat SCAN langkah di segmen dengan maxtime nilai tertinggi di SVL _ _QUERY. SUMMARY Untuk informasi selengkapnya, lihat Menggunakan SUMMARY tampilan SVL QUERY _ _.

Untuk memperbaiki masalah ini, tambahkan WHERE klausa ke kueri berdasarkan kolom pengurutan utama dari tabel terbesar. Pendekatan ini membantu meminimalkan waktu pemindaian. Untuk informasi selengkapnya, lihat Praktik terbaik Amazon Redshift untuk mendesain tabel.

Predikat yang tidak cukup membatasi

Jika kueri Anda memiliki predikat restriktif yang tidak memadai, Anda mungkin melihat SCAN langkah di segmen dengan maxtime nilai tertinggi di SVL _ QUERY _ SUMMARY yang memiliki nilai sangat tinggi dibandingkan dengan rows rows nilai pada RETURN langkah terakhir dalam kueri. Untuk informasi selengkapnya, lihat Menggunakan SUMMARY tampilan SVL QUERY _ _.

Untuk memperbaiki masalah ini, coba tambahkan predikat ke kueri atau buat predikat yang ada lebih ketat untuk mempersempit output.

Set hasil yang sangat besar

Jika kueri Anda mengembalikan kumpulan hasil yang sangat besar, pertimbangkan untuk menulis ulang kueri yang akan digunakan UNLOAD untuk menulis hasil ke Amazon S3. Pendekatan ini meningkatkan kinerja RETURN langkah dengan memanfaatkan pemrosesan paralel. Untuk informasi lebih lanjut tentang memeriksa set hasil yang sangat besar, lihatMenggunakan SUMMARY tampilan SVL QUERY _ _.

SELECTDaftar besar

Jika kueri Anda memiliki SELECT daftar yang luar biasa besar, Anda mungkin melihat bytes nilai yang relatif tinggi terhadap rows nilai untuk langkah apa pun (dibandingkan dengan langkah lain) di SVL _ QUERY _SUMMARY. bytesNilai tinggi ini bisa menjadi indikator bahwa Anda memilih banyak kolom. Untuk informasi selengkapnya, lihat Menggunakan SUMMARY tampilan SVL QUERY _ _.

Untuk memperbaiki masalah ini, tinjau kolom yang Anda pilih dan lihat apakah ada yang dapat dihapus.