Meninjau langkah-langkah rencana kueri - Amazon Redshift

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

Meninjau langkah-langkah rencana kueri

Anda dapat melihat langkah-langkah dalam rencana kueri dengan menjalankan perintah EXPLOW. Contoh berikut menunjukkan query SQL dan menjelaskan output. Membaca rencana query dari bawah ke atas, Anda dapat melihat setiap operasi logis yang digunakan untuk melakukan query. Untuk informasi selengkapnya, lihat Rencana kueri.

explain select eventname, sum(pricepaid) from sales, event where sales.eventid = event.eventid group by eventname order by 2 desc;
XN Merge (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Merge Key: sum(sales.pricepaid) -> XN Network (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Send to leader -> XN Sort (cost=1002815366604.92..1002815366606.36 rows=576 width=27) Sort Key: sum(sales.pricepaid) -> XN HashAggregate (cost=2815366577.07..2815366578.51 rows=576 width=27) -> XN Hash Join DS_BCAST_INNER (cost=109.98..2815365714.80 rows=172456 width=27) Hash Cond: ("outer".eventid = "inner".eventid) -> XN Seq Scan on sales (cost=0.00..1724.56 rows=172456 width=14) -> XN Hash (cost=87.98..87.98 rows=8798 width=21) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=21)

Sebagai bagian dari pembuatan rencana kueri, pengoptimal kueri memecah paket menjadi aliran, segmen, dan langkah. Pengoptimal kueri memecah rencana untuk mempersiapkan pendistribusian data dan beban kerja kueri ke node komputasi. Untuk informasi selengkapnya tentang aliran, segmen, dan langkah, lihatPerencanaan kueri dan alur kerja eksekusi.

Ilustrasi berikut menunjukkan kueri sebelumnya dan rencana kueri terkait. Ini menampilkan bagaimana operasi kueri melibatkan peta ke langkah-langkah yang digunakan Amazon Redshift untuk menghasilkan kode yang dikompilasi untuk irisan node komputasi. Setiap operasi rencana kueri memetakan ke beberapa langkah dalam segmen, dan terkadang ke beberapa segmen dalam aliran.

Dalam ilustrasi ini, pengoptimal kueri menjalankan rencana kueri sebagai berikut:

  1. DiStream 0, kueri berjalan Segment 0 dengan operasi pemindaian sekuensial untuk memindai events tabel. Query berlanjut Segment 1 dengan operasi hash untuk membuat tabel hash untuk tabel bagian dalam di join.

  2. DiStream 1, kueri berjalan Segment 2 dengan operasi pemindaian sekuensial untuk memindai sales tabel. Ini berlanjut Segment 2 dengan bergabung dengan hash untuk bergabung dengan tabel di mana kolom gabungan bukan kunci distribusi dan kunci pengurutan. Sekali lagi berlanjut Segment 2 dengan agregat hash untuk mengumpulkan hasil. Kemudian kueri berjalan Segment 3 dengan operasi agregat hash untuk melakukan fungsi agregat dikelompokkan yang tidak disortir, dan operasi pengurutan untuk mengevaluasi klausa ORDER BY dan operasi pengurutan lainnya.

  3. DalamStream 2, kueri menjalankan operasi jaringan di Segment 4 dan Segment 5 untuk mengirim hasil antara ke node pemimpin untuk diproses lebih lanjut.

Segmen terakhir dari query mengembalikan data. Jika set pengembalian dikumpulkan atau diurutkan, node komputasi masing-masing mengirim bagian hasil perantara mereka ke node pemimpin. Node pemimpin kemudian menggabungkan data sehingga hasil akhir dapat dikirim kembali ke klien yang meminta.

Untuk informasi selengkapnya tentang operator EXPLORE, lihatEXPLAIN.