View a markdown version of this page

Performa kueri Amazon Redshift Spectrum - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

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

Performa kueri Amazon Redshift Spectrum

Topik ini menjelaskan cara meningkatkan kinerja kueri Redshift Spectrum.

Lihatlah rencana kueri untuk menemukan langkah-langkah apa yang telah didorong ke lapisan Amazon Redshift Spectrum.

Langkah-langkah berikut terkait dengan kueri Redshift Spectrum:

  • Pemindaian S3 Seq

  • S3 HashAggregate

  • Pemindaian Kueri S3

  • Seq Scan PartitionInfo

  • Lingkaran Partisi

Contoh berikut menunjukkan rencana kueri untuk kueri yang menggabungkan tabel eksternal dengan tabel lokal. Perhatikan HashAggregate langkah S3 Seq Scan dan S3 yang dijalankan terhadap data di Amazon S3.

explain select top 10 spectrum.sales.eventid, sum(spectrum.sales.pricepaid) from spectrum.sales, event where spectrum.sales.eventid = event.eventid and spectrum.sales.pricepaid > 30 group by spectrum.sales.eventid order by 2 desc;
QUERY PLAN ----------------------------------------------------------------------------- XN Limit (cost=1001055770628.63..1001055770628.65 rows=10 width=31) -> XN Merge (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Merge Key: sum(sales.derived_col2) -> XN Network (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Send to leader -> XN Sort (cost=1001055770628.63..1001055770629.13 rows=200 width=31) Sort Key: sum(sales.derived_col2) -> XN HashAggregate (cost=1055770620.49..1055770620.99 rows=200 width=31) -> XN Hash Join DS_BCAST_INNER (cost=3119.97..1055769620.49 rows=200000 width=31) Hash Cond: ("outer".derived_col1 = "inner".eventid) -> XN S3 Query Scan sales (cost=3010.00..5010.50 rows=200000 width=31) -> S3 HashAggregate (cost=3010.00..3010.50 rows=200000 width=16) -> S3 Seq Scan spectrum.sales location:"s3://redshift-downloads/tickit/spectrum/sales" format:TEXT (cost=0.00..2150.00 rows=172000 width=16) Filter: (pricepaid > 30.00) -> XN Hash (cost=87.98..87.98 rows=8798 width=4) -> XN Seq Scan on event (cost=0.00..87.98 rows=8798 width=4)

Perhatikan elemen-elemen berikut dalam rencana kueri:

  • N S3 Seq Scan ode menunjukkan filter pricepaid > 30.00 diproses di lapisan Redshift Spectrum.

    Node filter di bawah XN S3 Query Scan node menunjukkan pemrosesan predikat di Amazon Redshift di atas data yang dikembalikan dari lapisan Redshift Spectrum.

  • N S3 HashAggregate ode menunjukkan agregasi di lapisan Redshift Spectrum untuk grup dengan klausa (group by spectrum.sales.eventid).

Berikut ini adalah cara untuk meningkatkan kinerja Redshift Spectrum:

  • Gunakan file data berformat Apache Parquet. Parquet menyimpan data dalam format kolom, sehingga Redshift Spectrum dapat menghilangkan kolom yang tidak diperlukan dari pemindaian. Ketika data dalam format file teks, Redshift Spectrum perlu memindai seluruh file.

  • Gunakan beberapa file untuk mengoptimalkan pemrosesan paralel. Jaga ukuran file Anda lebih besar dari 64 MB. Hindari kemiringan ukuran data dengan menjaga file dengan ukuran yang sama. Untuk informasi tentang file dan rekomendasi konfigurasi Apache Parquet, lihat Format File: Konfigurasi dalam Dokumentasi Parquet Apache.

  • Gunakan kolom sesedikit mungkin dalam kueri Anda.

  • Letakkan tabel fakta besar Anda di Amazon S3 dan simpan tabel dimensi kecil yang sering digunakan di database Amazon Redshift lokal Anda.

  • Perbarui statistik tabel eksternal dengan mengatur parameter TABLE PROPERTIES numRows. Gunakan CREATE EXTERNAL TABLE atau ALTER TABLE untuk mengatur parameter TABLE PROPERTIES numRows untuk mencerminkan jumlah baris dalam tabel. Amazon Redshift tidak menganalisis tabel eksternal untuk menghasilkan statistik tabel yang digunakan pengoptimal kueri untuk menghasilkan rencana kueri. Jika statistik tabel tidak disetel untuk tabel eksternal, Amazon Redshift akan menghasilkan rencana eksekusi kueri. Amazon Redshift menghasilkan rencana ini berdasarkan asumsi bahwa tabel eksternal adalah tabel yang lebih besar dan tabel lokal adalah tabel yang lebih kecil.

  • Perencana kueri Amazon Redshift mendorong predikat dan agregasi ke lapisan kueri Redshift Spectrum bila memungkinkan. Ketika sejumlah besar data dikembalikan dari Amazon S3, pemrosesan dibatasi oleh sumber daya cluster Anda. Redshift Spectrum diskalakan secara otomatis untuk memproses permintaan besar. Dengan demikian, kinerja Anda secara keseluruhan meningkat setiap kali Anda dapat mendorong pemrosesan ke lapisan Redshift Spectrum.

  • Tulis kueri Anda untuk menggunakan filter dan agregasi yang memenuhi syarat untuk didorong ke lapisan Redshift Spectrum.

    Berikut ini adalah contoh dari beberapa operasi yang dapat didorong ke lapisan Redshift Spectrum:

    • KLAUSUL GROUP BY

    • Kondisi perbandingan dan kondisi pencocokan pola, seperti LIKE.

    • Fungsi agregat, seperti COUNT, SUM, AVG, MIN, dan MAX.

    • Fungsi string.

    Operasi yang tidak dapat didorong ke lapisan Redshift Spectrum termasuk DISTINCT dan ORDER BY.

  • Gunakan partisi untuk membatasi data yang dipindai. Partisi data Anda berdasarkan predikat kueri yang paling umum, lalu pangkas partisi dengan memfilter kolom partisi. Untuk informasi selengkapnya, lihat Partisi tabel eksternal Redshift Spectrum.

    Kueri SVL_S3PARTISI untuk melihat partisi total dan partisi yang memenuhi syarat.

  • Gunakan AWS Glue generator statistik untuk menghitung statistik tingkat kolom untuk tabel. AWS Glue Data Catalog Setelah AWS Glue menghasilkan statistik untuk tabel di Katalog Data, Amazon Redshift Spectrum secara otomatis menggunakan statistik tersebut untuk mengoptimalkan rencana kueri. Untuk informasi selengkapnya tentang menghitung statistik tingkat kolom menggunakan AWS Glue, lihat Bek erja dengan statistik kolom di Panduan Peng AWS Glue embang.