Faktor kinerja kueri untuk Amazon Redshift - AWS Bimbingan Preskriptif

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

Faktor kinerja kueri untuk Amazon Redshift

Sejumlah faktor dapat mempengaruhi kinerja kueri. Aspek-aspek berikut dari data, cluster, dan operasi database Anda semuanya berperan dalam seberapa cepat kueri Anda diproses:

Properti tabel

Tabel Amazon Redshift adalah unit dasar untuk menyimpan data di Amazon Redshift, dan setiap tabel memiliki seperangkat properti yang menentukan perilaku dan aksesibilitasnya. Properti ini termasuk penyortiran, gaya distribusi, pengkodean kompresi, dan banyak lainnya. Memahami properti ini sangat penting untuk mengoptimalkan kinerja, keamanan, dan efektivitas biaya tabel Amazon Redshift.

Sortir kunci

Amazon Redshift menyimpan data pada disk dalam urutan yang diurutkan menurut tombol pengurutan tabel. Pengoptimal kueri dan prosesor kueri menggunakan informasi tentang lokasi data dalam node komputasi untuk mengurangi jumlah blok yang harus dipindai. Ini meningkatkan kecepatan kueri secara signifikan dengan mengurangi jumlah data yang akan diproses. Kami menyarankan Anda menggunakan tombol sortir untuk memfasilitasi filter dalam WHERE klausa. Untuk informasi selengkapnya, lihat Bekerja dengan kunci pengurutan dalam dokumentasi Amazon Redshift.

Kompresi data

Kompresi data mengurangi kebutuhan penyimpanan, yang mengurangi I/O disk dan meningkatkan kinerja kueri. Saat Anda menjalankan kueri, data terkompresi dibaca ke dalam memori dan kemudian tidak dikompresi saat kueri berjalan. Dengan memuat lebih sedikit data ke dalam memori, Amazon Redshift dapat mengalokasikan lebih banyak memori untuk menganalisis data. Karena penyimpanan kolumnar menyimpan data serupa secara berurutan, Amazon Redshift dapat menerapkan pengkodean kompresi adaptif yang secara khusus terkait dengan tipe data kolumnar. Cara terbaik untuk mengaktifkan kompresi data pada kolom tabel adalah dengan menggunakan AUTO opsi di Amazon Redshift untuk menerapkan pengkodean kompresi optimal saat Anda memuat tabel dengan data. Untuk mempelajari selengkapnya tentang menggunakan kompresi data otomatis, lihat Memuat tabel dengan kompresi otomatis di dokumentasi Amazon Redshift.

Distribusi data

Amazon Redshift menyimpan data pada node komputasi sesuai dengan gaya distribusi tabel. Saat Anda menjalankan kueri, pengoptimal kueri mendistribusikan ulang data ke node komputasi sesuai kebutuhan untuk melakukan gabungan dan agregasi apa pun. Memilih gaya distribusi yang tepat untuk tabel membantu meminimalkan dampak langkah redistribusi dengan menemukan data di tempat yang diperlukan sebelum penggabungan dilakukan. Kami menyarankan Anda menggunakan kunci distribusi untuk memfasilitasi gabungan yang paling umum. Untuk informasi selengkapnya, lihat Bekerja dengan gaya distribusi data dalam dokumentasi Amazon Redshift.

Pemeliharaan meja

Meskipun Amazon Redshift memberikan kinerja terdepan di industri di luar kotak untuk sebagian besar beban kerja, menjaga klaster Amazon Redshift berjalan dengan baik memerlukan pemeliharaan. Memperbarui dan menghapus data membuat baris mati yang harus disedot, dan bahkan tabel yang hanya ditambahkan harus digunakan jika urutan lampiran tidak konsisten dengan kunci pengurutan.

Vakum

Proses menyedot debu di Amazon Redshift sangat penting untuk kesehatan dan pemeliharaan cluster Amazon Redshift Anda. Ini juga mempengaruhi kinerja kueri. Karena menghapus dan memperbarui keduanya menandai data lama tetapi tidak benar-benar menghapusnya, Anda harus menggunakan penyedot debu untuk merebut kembali ruang disk yang ditempati oleh baris tabel yang ditandai untuk dihapus oleh sebelumnya dan operasi. UPDATE DELETE Amazon Redshift dapat secara otomatis mengurutkan dan melakukan VACUUM DELETE operasi pada tabel di latar belakang.

Untuk membersihkan tabel setelah pemuatan atau serangkaian pembaruan tambahan, Anda juga dapat menjalankan VACUUM perintah, baik terhadap seluruh database atau terhadap tabel individual. Jika tabel memiliki kunci pengurutan dan beban tabel tidak dioptimalkan untuk diurutkan saat disisipkan, maka Anda harus menggunakan penyedot debu untuk menggunakan data (yang dapat menjadi penting untuk kinerja). Untuk informasi selengkapnya, lihat Menyedot debu tabel di dokumentasi Amazon Redshift.

Menganalisis

ANALYZEOperasi memperbarui metadata statistik pada tabel dalam database Amazon Redshift. Menjaga statistik terkini meningkatkan kinerja kueri dengan memungkinkan perencana kueri untuk memilih paket yang optimal. Amazon Redshift terus memantau database Anda dan secara otomatis melakukan operasi analisis di latar belakang. Untuk meminimalkan dampak pada kinerja sistem Anda, ANALYZE operasi berjalan secara otomatis selama periode ketika beban kerja ringan. Jika Anda memilih untuk menjalankan secara eksplisitANALYZE, lakukan hal berikut:

  • Jalankan ANALYZE perintah sebelum menjalankan kueri.

  • Jalankan ANALYZE perintah pada database secara rutin di akhir setiap siklus pemuatan atau pembaruan reguler.

  • Jalankan ANALYZE perintah pada tabel baru yang Anda buat dan tabel atau kolom yang ada yang mengalami perubahan signifikan.

  • Pertimbangkan menjalankan ANALYZE operasi pada jadwal yang berbeda untuk berbagai jenis tabel dan kolom, tergantung pada penggunaannya dalam kueri dan kecenderungannya untuk berubah.

  • Untuk menghemat waktu dan sumber daya cluster, gunakan PREDICATE COLUMNS klausa saat Anda menjalankan ANALYZE perintah.

Konfigurasi cluster

Cluster adalah kumpulan node yang melakukan penyimpanan dan pemrosesan data yang sebenarnya. Menyiapkan cluster Amazon Redshift Anda dengan cara yang benar sangat penting jika Anda ingin mencapai hal berikut:

  • Skalabilitas dan konkurensi tinggi

  • Penggunaan Amazon Redshift yang efisien

  • Performa yang lebih baik

  • Biaya lebih rendah

Jenis simpul

Cluster Amazon Redshift dapat menggunakan salah satu dari beberapa jenis node (RA3, DC2, dan DS2). Setiap jenis node menawarkan ukuran dan batasan yang berbeda untuk membantu Anda menskalakan klaster dengan tepat. Ukuran node menentukan kapasitas penyimpanan, memori, CPU, dan harga setiap node dalam cluster. Optimalisasi biaya dan kinerja dimulai dengan memilih jenis dan ukuran node yang tepat. Untuk informasi selengkapnya tentang jenis node, lihat Ringkasan klaster Amazon Redshift di dokumentasi Amazon Redshift.

Ukuran node, jumlah node, dan irisan

Sebuah node komputasi dipartisi menjadi irisan. Lebih banyak node berarti lebih banyak prosesor dan irisan, yang memungkinkan kueri Anda memproses lebih cepat dengan menjalankan bagian kueri secara bersamaan di seluruh irisan. Namun, lebih banyak node juga berarti biaya yang lebih besar. Ini berarti Anda harus menemukan keseimbangan biaya dan kinerja yang sesuai untuk sistem Anda. Untuk informasi selengkapnya tentang arsitektur klaster Amazon Redshift, lihat Arsitektur sistem gudang data dalam dokumentasi Amazon Redshift.

Manajemen beban kerja

Amazon Redshift workload management (WLM) memungkinkan pengguna untuk secara fleksibel mengelola antrian beban kerja dengan prioritas sehingga kueri pendek yang berjalan cepat tidak akan terjebak dalam antrian di belakang kueri yang berjalan lama. WLM otomatis menggunakan algoritma pembelajaran mesin (ML) untuk membuat kueri profil dan menempatkannya dalam antrian yang sesuai dengan sumber daya yang sesuai, sambil mengelola konkurensi kueri dan alokasi memori. Untuk informasi selengkapnya tentang WLM, lihat Menerapkan manajemen beban kerja di dokumentasi Amazon Redshift.

Akselerasi kueri pendek

Akselerasi kueri singkat (SQA) memprioritaskan kueri jangka pendek sebelum kueri yang berjalan lama. SQA menjalankan kueri di ruang khusus sehingga kueri SQA tidak dipaksa untuk menunggu dalam antrian di belakang kueri yang lebih panjang. SQA hanya memprioritaskan kueri yang berjalan singkat dan berada dalam antrian yang ditentukan pengguna. Jika Anda menggunakan SQA, kueri jangka pendek mulai berjalan lebih cepat dan Anda dapat melihat hasilnya lebih cepat. Jika Anda mengaktifkan SQA, Anda dapat mengurangi atau menghilangkan antrian WLM yang didedikasikan untuk kueri jangka pendek. Selain itu, kueri yang berjalan lama tidak perlu bersaing untuk slot dalam antrian WLM. Ini berarti Anda dapat mengonfigurasi antrian WLM Anda untuk menggunakan lebih sedikit slot kueri. Jika Anda menggunakan konkurensi yang lebih rendah, throughput kueri ditingkatkan dan kinerja sistem secara keseluruhan ditingkatkan untuk sebagian besar beban kerja. Untuk informasi selengkapnya tentang SQA, lihat Bekerja dengan akselerasi kueri singkat di dokumentasi Amazon Redshift.

Kueri SQL

Query database adalah permintaan data dari database. Permintaan harus datang dalam cluster Amazon Redshift menggunakan SQL. Amazon Redshift mendukung alat klien SQL yang terhubung melalui Java Database Connectivity (JDBC) dan Open Database Connectivity (ODBC). Anda dapat menggunakan sebagian besar alat klien SQL yang mendukung driver JDBC atau ODBC.

Struktur kueri

Bagaimana kueri Anda ditulis sangat mempengaruhi kinerjanya. Kami menyarankan Anda menulis kueri untuk memproses dan mengembalikan data sesedikit yang diperlukan untuk memenuhi kebutuhan Anda. Untuk informasi selengkapnya tentang cara menyusun kueri, lihat bagian Praktik terbaik untuk mendesain kueri Amazon Redshift pada panduan ini.

Kompilasi kode

Amazon Redshift menghasilkan dan mengkompilasi kode untuk setiap rencana eksekusi kueri. Kode yang dikompilasi berjalan lebih cepat karena menghapus overhead menggunakan interpreter. Anda biasanya memiliki beberapa biaya overhead saat pertama kali kode dibuat dan dikompilasi. Akibatnya, kinerja kueri saat pertama kali Anda menjalankannya bisa menyesatkan. Biaya overhead bisa sangat terlihat ketika Anda menjalankan kueri satu kali. Kami menyarankan Anda menjalankan kueri untuk kedua kalinya untuk menentukan kinerja tipikal.

Amazon Redshift menggunakan layanan kompilasi tanpa server untuk menskalakan kompilasi kueri di luar sumber daya komputasi klaster Amazon Redshift. Segmen kode yang dikompilasi di-cache secara lokal di cluster dan dalam cache yang hampir tidak terbatas. Cache ini tetap ada setelah cluster reboot. Pemanggilan berikutnya dari kueri yang sama berjalan lebih cepat karena mereka dapat melewati fase kompilasi. Cache tidak kompatibel di seluruh versi Amazon Redshift, jadi kode dikompilasi ulang saat kueri dijalankan setelah pemutakhiran versi. Dengan menggunakan layanan kompilasi yang dapat diskalakan, Amazon Redshift dapat mengkompilasi kode secara paralel untuk memberikan kinerja yang cepat secara konsisten. Besarnya kecepatan beban kerja tergantung pada kompleksitas dan konkurensi kueri.