Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Paket kueri di Amazon Redshift
Rencana kueri adalah daftar instruksi yang harus diikuti oleh mesin eksekusi untuk mengeksekusi kueri pada data. Anda dapat membuat rencana kueri dengan menjalankan perintah EXPLOW diikuti dengan teks kueri yang sebenarnya, seperti yang ditunjukkan oleh contoh kueri berikut:
EXPLAIN select s.s_name, sum(li.l_quantity) as quantity from tpch.lineitem li join tpch.orders o on o.o_orderkey = li.l_orderkey and o.o_orderdate > '1992-05-01' join tpch.supplier s on s.s_suppkey = li.l_suppkey group by s.s_name order by quantity desc limit 10;
Jika Anda menjalankan EXPLAIN perintah untuk contoh query di atas, Anda mendapatkan output berikut:
XN Limit (cost=1004400430902.15..1004400430902.17 rows=10 width=39) -> XN Merge (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Merge Key: sum(li.l_quantity) -> XN Network (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Send to leader -> XN Sort (cost=1004400430902.15..1004400430926.97 rows=9928 width=39) Sort Key: sum(li.l_quantity) -> XN HashAggregate (cost=4400430218.24..4400430243.06 rows=9928 width=39) -> XN Hash Join DS_BCAST_INNER (cost=21489.58..4400401726.35 rows=5698378 width=39) Hash Cond: ("outer".l_suppkey = "inner".s_suppkey) -> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14) Hash Cond: ("outer".l_orderkey = "inner".o_orderkey) -> XN Seq Scan on lineitem li (cost=0.00..60012.15 rows=6001215 width=22) -> XN Hash (cost=17803.81..17803.81 rows=1424306 width=8) -> XN Seq Scan on orders o (cost=0.00..17803.81 rows=1424306 width=8) Filter: (o_orderdate > '1992-05-01'::date) -> XN Hash (cost=100.00..100.00 rows=10000 width=33) -> XN Seq Scan on supplier s (cost=0.00..100.00 rows=10000 width=33)
catatan
Contoh keluaran rencana kueri adalah tampilan eksekusi kueri tingkat tinggi yang disederhanakan. Rencana contoh tidak menggambarkan detail pemrosesan kueri paralel. Untuk informasi rinci, jalankan kueri lalu gunakan tampilan SVL_QUERY_SUMMARY atau SVL_QUERY_REPORT untuk mendapatkan informasi ringkasan kueri.
Editor kueri Amazon Redshift v2
Anda juga dapat melihat paket kueri di Amazon Redshift dengan menggunakan opsi Jelaskan di editor kueri v2. Untuk petunjuk, lihat Bekerja dengan editor kueri v2 di dokumentasi Amazon Redshift.
Rencana kueri yang dihasilkan oleh editor kueri v2 mencakup informasi berikut:
-
Operasi apa yang dilakukan mesin eksekusi, membaca hasil dari bawah ke atas
-
Jenis langkah apa yang dilakukan setiap operasi
-
Tabel dan kolom mana yang digunakan dalam setiap operasi
-
Berapa banyak data yang diproses dalam setiap operasi, dalam hal jumlah baris dan lebar data dalam byte
-
Biaya relatif operasi (Biaya adalah ukuran yang membandingkan waktu eksekusi relatif dari langkah-langkah dalam suatu rencana. Biaya tidak memberikan informasi yang tepat tentang waktu eksekusi aktual atau konsumsi memori, juga tidak memberikan perbandingan yang berarti antara rencana eksekusi. Biaya, bagaimanapun, memberi Anda indikasi operasi mana dalam kueri yang menghabiskan sumber daya paling banyak.)
JELASKAN rencana
Anda dapat menggunakan tabel sistem STL_EXPLOW untuk menampilkan EXPLAIN rencana kueri yang telah dikirimkan untuk dieksekusi. Secara keseluruhan, penggunaan STL_EXPLAIN dapat membantu meningkatkan kinerja, efisiensi, dan efektivitas biaya kueri Amazon Redshift Anda.
Manfaat menggunakan STL_EXPLAIN adalah:
-
Optimalisasi kinerja -
STL_EXPLAINdapat membantu mengidentifikasi area kueri yang dapat dioptimalkan untuk kinerja yang lebih baik. -
Perencanaan kueri —
STL_EXPLAINdapat memberikan informasi tentang bagaimana Amazon Redshift menjalankan kueri dan dapat membantu mengidentifikasi potensi kemacetan dalam kueri. -
Debugging —
STL_EXPLAINdapat membantu mendiagnosis masalah dengan kueri dengan menunjukkan langkah-langkah yang dilakukan Amazon Redshift untuk menjalankan kueri tersebut. -
Memahami perilaku Amazon Redshift —
STL_EXPLAINdapat memberikan wawasan tentang cara Amazon Redshift memproses kueri. Ini dapat membantu meningkatkan pemahaman Anda tentang perilaku Amazon Redshift. -
Optimalisasi biaya —
STL_EXPLAINdapat memberikan informasi tentang perkiraan biaya kueri. Ini dapat membantu Anda mengidentifikasi area di mana Anda dapat mengoptimalkan biaya.
Query berikut adalah contoh yang mengembalikan node rencana untuk query yang diberikan:
select nodeid as id, plannode, info from stl_explain where query=1042904 order by nodeid;
Query sebelumnya mengembalikan output sebagai berikut.
EXPLAINPaket mengembalikan metrik yang berguna untuk setiap operasi, termasuk metrik pada biaya, baris, dan lebar. Misalnya, baris 7 dari kueri sebelumnya mengembalikan yang berikut:
-> XN Hash Join DS_DIST_NONE (cost=21364.58..273387.85 rows=5698378 width=14)
Biaya
Biaya adalah nilai relatif yang berguna untuk membandingkan operasi dalam rencana. Biaya terdiri dari dua nilai desimal yang dipisahkan oleh dua periode. Dalam contoh ini, biaya sama dengan21364.58..273387.85. Pertimbangkan hal berikut:
-
Nilai pertama (dalam hal ini,
21364.58) memberikan biaya relatif untuk mengembalikan baris pertama untuk operasi ini. -
Nilai kedua (dalam hal ini,
273387.85) memberikan biaya relatif untuk menyelesaikan operasi.
Biaya dalam rencana kueri bersifat kumulatif dan menggulung dari baris yang lebih rendah ke yang lebih tinggi. Dalam contoh output di atas, baris 7 mencakup biaya operasi lain di baris di bawahnya sendiri (yaitu, baris 8-12 dan seterusnya).
Baris
Baris adalah perkiraan jumlah baris yang akan dikembalikan. Dalam contoh ini, pemindaian diharapkan mengembalikan 5.698.378 baris. Perkiraan baris didasarkan pada statistik yang tersedia yang dihasilkan oleh ANALYZE perintah. Jika ANALYZE belum dijalankan baru-baru ini, perkiraannya kurang dapat diandalkan.
Lebar
Lebar adalah perkiraan lebar baris rata-rata, dalam byte. Dalam contoh ini, baris rata-rata diharapkan menjadi 14 byte lebar.