Perencanaan kueri dan alur kerja eksekusi - Amazon Redshift

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.

Diagram showing query planning and execution workflow with components like parser, optimizer, and execution engine. (AI generated)

Alur kerja perencanaan dan eksekusi kueri mengikuti langkah-langkah berikut:

  1. Node pemimpin menerima kueri dan mem-parsing SQL.

  2. Parser menghasilkan pohon query awal yang merupakan representasi logis dari query asli. Amazon Redshift kemudian memasukkan pohon kueri ini ke pengoptimal kueri.

  3. Pengoptimal mengevaluasi dan jika perlu menulis ulang kueri untuk memaksimalkan efisiensinya. Proses ini terkadang menghasilkan beberapa kueri terkait untuk menggantikan satu kueri.

  4. 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 kompleks. Untuk informasi selengkapnya, lihat Rencana kueri.

  5. 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 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.

  6. 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 klausa LIMIT, limit diterapkan pada node pemimpin sebelum data didistribusikan kembali di seluruh cluster untuk diproses lebih lanjut.