Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Perencanaan kueri dan alur kerja eksekusi
Ilustrasi berikut memberikan tampilan tingkat tinggi dari alur kerja perencanaan dan eksekusi kueri.
Alur kerja perencanaan dan eksekusi kueri mengikuti langkah-langkah berikut:
-
Node pemimpin menerima kueri dan mem-parsing file. SQL
-
Parser menghasilkan pohon query awal yang merupakan representasi logis dari query asli. Amazon Redshift kemudian memasukkan pohon kueri ini ke pengoptimal kueri.
-
Pengoptimal mengevaluasi dan jika perlu menulis ulang kueri untuk memaksimalkan efisiensinya. Proses ini terkadang menghasilkan beberapa kueri terkait untuk menggantikan satu kueri.
-
Pengoptimal menghasilkan rencana kueri (atau beberapa, jika langkah sebelumnya menghasilkan beberapa kueri) untuk eksekusi dengan kinerja terbaik. Paket kueri menentukan opsi eksekusi seperti tipe gabungan, urutan gabungan, opsi agregasi, dan persyaratan distribusi data.
Anda dapat menggunakan EXPLAIN perintah untuk melihat rencana kueri. Rencana kueri adalah alat mendasar untuk menganalisis dan menyetel kueri yang kompleks. Untuk informasi selengkapnya, lihat Membuat dan menafsirkan rencana kueri.
-
Mesin eksekusi menerjemahkan rencana kueri menjadi langkah, segmen, dan aliran:
- Langkah
-
Setiap langkah adalah operasi individual yang diperlukan selama eksekusi kueri. Langkah-langkah dapat digabungkan untuk memungkinkan node komputasi melakukan kueri, bergabung, atau operasi basis data lainnya.
- Segment
-
Kombinasi dari beberapa langkah yang dapat dilakukan oleh satu proses, juga unit kompilasi terkecil yang dapat dieksekusi oleh irisan node komputasi. Slice adalah unit pemrosesan paralel di Amazon Redshift. Segmen dalam aliran berjalan secara paralel.
- Streaming
-
Kumpulan segmen yang akan dibagi di atas irisan node komputasi yang tersedia.
Mesin eksekusi menghasilkan kode yang dikompilasi berdasarkan langkah, segmen, dan aliran. Kode yang dikompilasi berjalan lebih cepat daripada kode yang ditafsirkan dan menggunakan kapasitas komputasi yang lebih sedikit. Kode yang dikompilasi ini kemudian disiarkan ke node komputasi.
catatan
Saat membandingkan kueri Anda, Anda harus selalu membandingkan waktu untuk eksekusi kedua kueri, karena waktu eksekusi pertama mencakup overhead kompilasi kode. Untuk informasi selengkapnya, lihat Faktor-faktor yang mempengaruhi kinerja kueri.
-
Irisan node komputasi menjalankan segmen kueri secara paralel. Sebagai bagian dari proses ini, Amazon Redshift memanfaatkan komunikasi jaringan, memori, dan manajemen disk yang dioptimalkan untuk meneruskan hasil perantara dari satu langkah rencana kueri ke langkah berikutnya. Ini juga membantu mempercepat eksekusi kueri.
Langkah 5 dan 6 terjadi sekali untuk setiap aliran. Mesin membuat segmen yang dapat dieksekusi untuk satu aliran dan mengirimkannya ke node komputasi. Ketika segmen aliran itu selesai, mesin menghasilkan segmen untuk aliran berikutnya. Dengan cara ini, mesin dapat menganalisis apa yang terjadi di aliran sebelumnya (misalnya, apakah operasi berbasis disk) untuk mempengaruhi generasi segmen di aliran berikutnya.
Ketika node komputasi selesai, mereka mengembalikan hasil kueri ke node pemimpin untuk pemrosesan akhir. Node pemimpin menggabungkan data menjadi satu set hasil dan menangani penyortiran atau agregasi yang diperlukan. Node pemimpin kemudian mengembalikan hasilnya ke klien.
catatan
Node komputasi mungkin mengembalikan beberapa data ke node pemimpin selama eksekusi kueri jika perlu. Misalnya, jika Anda memiliki subquery dengan LIMIT klausa, batas diterapkan pada node pemimpin sebelum data didistribusikan kembali di seluruh cluster untuk diproses lebih lanjut.