Rekomendasi Amazon Redshift Advisor - Amazon Redshift

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

Rekomendasi Amazon Redshift Advisor

Amazon Redshift Advisor menawarkan rekomendasi tentang cara mengoptimalkan klaster Amazon Redshift Anda untuk meningkatkan kinerja dan menghemat biaya pengoperasian. Anda dapat menemukan penjelasan untuk setiap rekomendasi di konsol, seperti yang dijelaskan sebelumnya. Anda dapat menemukan detail lebih lanjut tentang rekomendasi ini di bagian berikut.

Kompres objek file Amazon S3 yang dimuat oleh COPY

COPYPerintah ini memanfaatkan arsitektur massively parallel processing (MPP) di Amazon Redshift untuk membaca dan memuat data secara paralel. Itu dapat membaca file dari Amazon S3, tabel DynamoDB, dan output teks dari satu atau lebih host jarak jauh.

Saat memuat data dalam jumlah besar, kami sangat menyarankan menggunakan COPY perintah untuk memuat file data terkompresi dari S3. Mengompresi kumpulan data besar menghemat waktu mengunggah file ke Amazon S3. COPYjuga dapat mempercepat proses pemuatan dengan membuka kompresi file saat dibaca.

Analisis

COPYPerintah yang berjalan lama yang memuat kumpulan data besar yang tidak terkompresi sering kali memiliki peluang untuk peningkatan kinerja yang cukup besar. Analisis Advisor mengidentifikasi COPY perintah yang memuat kumpulan data besar yang tidak terkompresi. Dalam kasus seperti itu, Advisor menghasilkan rekomendasi untuk menerapkan kompresi pada file sumber di Amazon S3.

Rekomendasi

Pastikan setiap COPY yang memuat sejumlah besar data, atau berjalan selama durasi yang signifikan, menyerap objek data terkompresi dari Amazon S3. Anda dapat mengidentifikasi COPY perintah yang memuat kumpulan data besar yang tidak terkompresi dari Amazon S3 dengan menjalankan perintah berikut sebagai superuser. SQL

SELECT wq.userid, query, exec_start_time AS starttime, COUNT(*) num_files, ROUND(MAX(wq.total_exec_time/1000000.0),2) execution_secs, ROUND(SUM(transfer_size)/(1024.0*1024.0),2) total_mb, SUBSTRING(querytxt,1,60) copy_sql FROM stl_s3client s JOIN stl_query q USING (query) JOIN stl_wlm_query wq USING (query) WHERE s.userid>1 AND http_method = 'GET' AND POSITION('COPY ANALYZE' IN querytxt) = 0 AND aborted = 0 AND final_state='Completed' GROUP BY 1, 2, 3, 7 HAVING SUM(transfer_size) = SUM(data_size) AND SUM(transfer_size)/(1024*1024) >= 5 ORDER BY 6 DESC, 5 DESC;

Jika data bertahap tetap berada di Amazon S3 setelah Anda memuatnya, yang umum dalam arsitektur data lake, menyimpan data ini dalam bentuk terkompresi dapat mengurangi biaya penyimpanan Anda.

Kiat implementasi

  • Ukuran objek yang ideal adalah 1-128 MB setelah kompresi.

  • Anda dapat mengompres file dengan format gzip, lzop, atau bzip2.

Mengisolasi beberapa database aktif

Sebagai praktik terbaik, kami merekomendasikan untuk mengisolasi database di Amazon Redshift satu sama lain. Kueri berjalan dalam database tertentu dan tidak dapat mengakses data dari database lain di cluster. Namun, kueri yang Anda jalankan di semua database cluster berbagi ruang penyimpanan klaster dasar dan sumber daya komputasi yang sama. Ketika satu cluster berisi beberapa database aktif, beban kerja mereka biasanya tidak terkait.

Analisis

Analisis Advisor meninjau semua database di cluster untuk beban kerja aktif yang berjalan pada saat yang bersamaan. Jika ada beban kerja aktif yang berjalan pada saat bersamaan, Advisor akan membuat rekomendasi untuk mempertimbangkan migrasi database untuk memisahkan kluster Amazon Redshift.

Rekomendasi

Pertimbangkan untuk memindahkan setiap database yang ditanyakan secara aktif ke cluster khusus yang terpisah. Menggunakan cluster terpisah dapat mengurangi pertentangan sumber daya dan meningkatkan kinerja kueri. Hal ini dapat dilakukan karena memungkinkan Anda untuk mengatur ukuran untuk setiap cluster untuk penyimpanan, biaya, dan kebutuhan kinerja setiap beban kerja. Selain itu, beban kerja yang tidak terkait sering mendapat manfaat dari konfigurasi manajemen beban kerja yang berbeda.

Untuk mengidentifikasi database mana yang digunakan secara aktif, Anda dapat menjalankan SQL perintah ini sebagai superuser.

SELECT database, COUNT(*) as num_queries, AVG(DATEDIFF(sec,starttime,endtime)) avg_duration, MIN(starttime) as oldest_ts, MAX(endtime) as latest_ts FROM stl_query WHERE userid > 1 GROUP BY database;

Kiat implementasi

  • Karena pengguna harus terhubung ke setiap database secara khusus, dan kueri hanya dapat mengakses satu database, memindahkan database ke cluster terpisah memiliki dampak minimal bagi pengguna.

  • Salah satu opsi untuk memindahkan database adalah dengan mengambil langkah-langkah berikut:

    1. Kembalikan snapshot dari cluster saat ini untuk sementara ke cluster dengan ukuran yang sama.

    2. Hapus semua database dari cluster baru kecuali database target yang akan dipindahkan.

    3. Ubah ukuran cluster ke jenis node yang sesuai dan hitung untuk beban kerja database.

Realokasi manajemen beban kerja () memori WLM

Amazon Redshift merutekan kueri pengguna untuk Menerapkan manual WLM diproses. Manajemen beban kerja (WLM) mendefinisikan bagaimana kueri tersebut dialihkan ke antrian. Amazon Redshift mengalokasikan setiap antrian sebagian dari memori cluster yang tersedia. Memori antrian dibagi di antara slot kueri antrian.

Ketika antrian dikonfigurasi dengan lebih banyak slot daripada yang dibutuhkan beban kerja, memori yang dialokasikan ke slot yang tidak digunakan ini kurang dimanfaatkan. Mengurangi slot yang dikonfigurasi agar sesuai dengan persyaratan beban kerja puncak mendistribusikan kembali memori yang kurang dimanfaatkan ke slot aktif, dan dapat menghasilkan peningkatan kinerja kueri.

Analisis

Analisis Advisor meninjau persyaratan konkurensi beban kerja untuk mengidentifikasi antrian kueri dengan slot yang tidak digunakan. Advisor menghasilkan rekomendasi untuk mengurangi jumlah slot dalam antrian ketika menemukan yang berikut:

  • Antrian dengan slot yang sama sekali tidak aktif selama analisis.

  • Antrian dengan lebih dari empat slot yang memiliki setidaknya dua slot tidak aktif selama analisis.

Rekomendasi

Mengurangi slot yang dikonfigurasi agar sesuai dengan persyaratan beban kerja puncak mendistribusikan kembali memori yang kurang dimanfaatkan ke slot aktif. Pertimbangkan untuk mengurangi jumlah slot yang dikonfigurasi untuk antrian di mana slot belum pernah sepenuhnya digunakan. Untuk mengidentifikasi antrian ini, Anda dapat membandingkan persyaratan slot per jam puncak untuk setiap antrian dengan menjalankan SQL perintah berikut sebagai superuser.

WITH generate_dt_series AS (select sysdate - (n * interval '5 second') as dt from (select row_number() over () as n from stl_scan limit 17280)), apex AS ( SELECT iq.dt, iq.service_class, iq.num_query_tasks, count(iq.slot_count) as service_class_queries, sum(iq.slot_count) as service_class_slots FROM (select gds.dt, wq.service_class, wscc.num_query_tasks, wq.slot_count FROM stl_wlm_query wq JOIN stv_wlm_service_class_config wscc ON (wscc.service_class = wq.service_class AND wscc.service_class > 5) JOIN generate_dt_series gds ON (wq.service_class_start_time <= gds.dt AND wq.service_class_end_time > gds.dt) WHERE wq.userid > 1 AND wq.service_class > 5) iq GROUP BY iq.dt, iq.service_class, iq.num_query_tasks), maxes as (SELECT apex.service_class, trunc(apex.dt) as d, date_part(h,apex.dt) as dt_h, max(service_class_slots) max_service_class_slots from apex group by apex.service_class, apex.dt, date_part(h,apex.dt)) SELECT apex.service_class - 5 AS queue, apex.service_class, apex.num_query_tasks AS max_wlm_concurrency, maxes.d AS day, maxes.dt_h || ':00 - ' || maxes.dt_h || ':59' as hour, MAX(apex.service_class_slots) as max_service_class_slots FROM apex JOIN maxes ON (apex.service_class = maxes.service_class AND apex.service_class_slots = maxes.max_service_class_slots) GROUP BY apex.service_class, apex.num_query_tasks, maxes.d, maxes.dt_h ORDER BY apex.service_class, maxes.d, maxes.dt_h;

max_service_class_slotsKolom mewakili jumlah maksimum slot WLM kueri dalam antrian kueri untuk jam itu. Jika ada antrian yang kurang dimanfaatkan, terapkan optimasi pengurangan slot dengan memodifikasi grup parameter, seperti yang dijelaskan dalam Panduan Manajemen Pergeseran Merah Amazon.

Kiat implementasi

  • Jika beban kerja Anda sangat bervariasi dalam volume, pastikan bahwa analisis menangkap periode pemanfaatan puncak. Jika tidak, jalankan sebelumnya SQL berulang kali untuk memantau persyaratan konkurensi puncak.

  • Untuk detail selengkapnya tentang menafsirkan hasil kueri dari SQL kode sebelumnya, lihat skrip wlm_apex_hourly.sql di. GitHub

Lewati analisis kompresi selama COPY

Saat Anda memuat data ke dalam tabel kosong dengan pengkodean kompresi yang dideklarasikan dengan COPY perintah, Amazon Redshift menerapkan kompresi penyimpanan. Optimalisasi ini memastikan bahwa data di cluster Anda disimpan secara efisien bahkan ketika dimuat oleh pengguna akhir. Analisis yang diperlukan untuk menerapkan kompresi dapat membutuhkan waktu yang signifikan.

Analisis

Analisis Advisor memeriksa COPY operasi yang tertunda oleh analisis kompresi otomatis. Analisis menentukan pengkodean kompresi dengan mengambil sampel data saat sedang dimuat. Pengambilan sampel ini mirip dengan yang dilakukan oleh ANALYZE COMPRESSION perintah.

Saat Anda memuat data sebagai bagian dari proses terstruktur, seperti dalam batch ekstrak, transformasi, beban (ETL) semalam, Anda dapat menentukan kompresi sebelumnya. Anda juga dapat mengoptimalkan definisi tabel Anda untuk melewati fase ini secara permanen tanpa dampak negatif.

Rekomendasi

Untuk meningkatkan COPY daya tanggap dengan melewatkan fase analisis kompresi, terapkan salah satu dari dua opsi berikut:

  • Gunakan ENCODE parameter kolom saat membuat tabel apa pun yang Anda muat menggunakan COPY perintah.

  • Matikan kompresi sama sekali dengan memasok COMPUPDATE OFF parameter dalam perintah. COPY

Solusi terbaik umumnya menggunakan pengkodean kolom selama pembuatan tabel, karena pendekatan ini juga mempertahankan manfaat menyimpan data terkompresi pada disk. Anda dapat menggunakan ANALYZE COMPRESSION perintah untuk menyarankan pengkodean kompresi, tetapi Anda harus membuat ulang tabel untuk menerapkan pengkodean ini. Untuk mengotomatiskan proses ini, Anda dapat menggunakan AWSColumnEncodingUtility, ditemukan di GitHub.

Untuk mengidentifikasi COPY operasi terbaru yang memicu analisis kompresi otomatis, jalankan SQL perintah berikut.

WITH xids AS ( SELECT xid FROM stl_query WHERE userid>1 AND aborted=0 AND querytxt = 'analyze compression phase 1' GROUP BY xid INTERSECT SELECT xid FROM stl_commit_stats WHERE node=-1) SELECT a.userid, a.query, a.xid, a.starttime, b.complyze_sec, a.copy_sec, a.copy_sql FROM (SELECT q.userid, q.query, q.xid, date_trunc('s',q.starttime) starttime, substring(querytxt,1,100) as copy_sql, ROUND(datediff(ms,starttime,endtime)::numeric / 1000.0, 2) copy_sec FROM stl_query q JOIN xids USING (xid) WHERE (querytxt ilike 'copy %from%' OR querytxt ilike '% copy %from%') AND querytxt not like 'COPY ANALYZE %') a LEFT JOIN (SELECT xid, ROUND(sum(datediff(ms,starttime,endtime))::numeric / 1000.0,2) complyze_sec FROM stl_query q JOIN xids USING (xid) WHERE (querytxt like 'COPY ANALYZE %' OR querytxt like 'analyze compression phase %') GROUP BY xid ) b ON a.xid = b.xid WHERE b.complyze_sec IS NOT NULL ORDER BY a.copy_sql, a.starttime;

Kiat implementasi

  • Pastikan bahwa semua tabel dengan ukuran signifikan yang dibuat selama ETL proses Anda (misalnya, tabel pementasan dan tabel sementara) mendeklarasikan pengkodean kompresi untuk semua kolom kecuali kunci pengurutan pertama.

  • Perkirakan ukuran masa pakai yang diharapkan dari tabel yang dimuat untuk setiap COPY perintah yang diidentifikasi oleh SQL perintah sebelumnya. Jika Anda yakin bahwa tabel akan tetap sangat kecil, matikan kompresi sama sekali dengan COMPUPDATE OFF parameter. Jika tidak, buat tabel dengan kompresi eksplisit sebelum memuatnya dengan COPY perintah.

Pisahkan objek Amazon S3 yang dimuat oleh COPY

COPYPerintah ini memanfaatkan arsitektur massively parallel processing (MPP) di Amazon Redshift untuk membaca dan memuat data dari file di Amazon S3. COPYPerintah memuat data secara paralel dari beberapa file, membagi beban kerja di antara node di cluster Anda. Untuk mencapai throughput yang optimal, kami sangat menyarankan Anda membagi data Anda menjadi beberapa file untuk memanfaatkan pemrosesan paralel.

Analisis

Analisis Advisor mengidentifikasi COPY perintah yang memuat kumpulan data besar yang terdapat dalam sejumlah kecil file yang dipentaskan di Amazon S3. COPYPerintah yang berjalan lama yang memuat kumpulan data besar dari beberapa file sering kali memiliki peluang untuk peningkatan kinerja yang cukup besar. Ketika Advisor mengidentifikasi bahwa COPY perintah ini membutuhkan banyak waktu, itu membuat rekomendasi untuk meningkatkan paralelisme dengan membagi data menjadi file tambahan di Amazon S3.

Rekomendasi

Dalam hal ini, kami merekomendasikan tindakan berikut, tercantum dalam urutan prioritas:

  1. Optimalkan COPY perintah yang memuat lebih sedikit file daripada jumlah node cluster.

  2. Optimalkan COPY perintah yang memuat lebih sedikit file daripada jumlah irisan cluster.

  3. Optimalkan COPY perintah di mana jumlah file bukan kelipatan dari jumlah irisan cluster.

COPYPerintah tertentu memuat sejumlah besar data atau berjalan untuk durasi yang signifikan. Untuk perintah ini, sebaiknya Anda memuat sejumlah objek data dari Amazon S3 yang setara dengan kelipatan jumlah irisan di cluster. Untuk mengidentifikasi berapa banyak objek S3 setiap COPY perintah telah dimuat, jalankan SQL kode berikut sebagai superuser.

SELECT query, COUNT(*) num_files, ROUND(MAX(wq.total_exec_time/1000000.0),2) execution_secs, ROUND(SUM(transfer_size)/(1024.0*1024.0),2) total_mb, SUBSTRING(querytxt,1,60) copy_sql FROM stl_s3client s JOIN stl_query q USING (query) JOIN stl_wlm_query wq USING (query) WHERE s.userid>1 AND http_method = 'GET' AND POSITION('COPY ANALYZE' IN querytxt) = 0 AND aborted = 0 AND final_state='Completed' GROUP BY query, querytxt HAVING (SUM(transfer_size)/(1024*1024))/COUNT(*) >= 2 ORDER BY CASE WHEN COUNT(*) < (SELECT max(node)+1 FROM stv_slices) THEN 1 WHEN COUNT(*) < (SELECT COUNT(*) FROM stv_slices WHERE node=0) THEN 2 ELSE 2+((COUNT(*) % (SELECT COUNT(*) FROM stv_slices))/(SELECT COUNT(*)::DECIMAL FROM stv_slices)) END, (SUM(transfer_size)/(1024.0*1024.0))/COUNT(*) DESC;

Kiat implementasi

  • Jumlah irisan dalam sebuah node tergantung pada ukuran node cluster. Untuk informasi selengkapnya tentang jumlah irisan di berbagai jenis node, lihat Cluster dan Node di Amazon Redshift di Panduan Manajemen Pergeseran Merah Amazon.

  • Anda dapat memuat beberapa file dengan menentukan awalan umum, atau kunci awalan, untuk set, atau dengan secara eksplisit mencantumkan file dalam file manifes. Untuk informasi selengkapnya tentang memuat file, lihatMemuat data dari file terkompresi dan tidak terkompresi.

  • Amazon Redshift tidak memperhitungkan ukuran file saat membagi beban kerja. Pisahkan file data beban Anda sehingga file berukuran hampir sama, antara 1 MB dan 1 GB setelah kompresi.

Perbarui statistik tabel

Amazon Redshift menggunakan pengoptimal kueri berbasis biaya untuk memilih paket eksekusi optimal untuk kueri. Perkiraan biaya didasarkan pada statistik tabel yang dikumpulkan menggunakan ANALYZE perintah. Ketika statistik kedaluwarsa atau hilang, database mungkin memilih rencana yang kurang efisien untuk eksekusi kueri, terutama untuk kueri yang kompleks. Mempertahankan statistik saat ini membantu kueri kompleks berjalan dalam waktu sesingkat mungkin.

Analisis

Analisis Advisor melacak tabel yang statistiknya hilang out-of-date atau hilang. Ini meninjau metadata akses tabel yang terkait dengan kueri kompleks. Jika tabel yang sering diakses dengan pola kompleks kehilangan statistik, Advisor membuat rekomendasi penting untuk dijalankanANALYZE. Jika tabel yang sering diakses dengan pola kompleks memiliki out-of-date statistik, Advisor membuat rekomendasi yang disarankan untuk dijalankanANALYZE.

Rekomendasi

Setiap kali konten tabel berubah secara signifikan, perbarui statistik denganANALYZE. Sebaiknya jalankan ANALYZE setiap kali sejumlah besar baris data baru dimuat ke dalam tabel yang ada dengan COPY atau INSERT perintah. Kami juga merekomendasikan menjalankan ANALYZE setiap kali sejumlah besar baris dimodifikasi menggunakan UPDATE atau DELETE perintah. Untuk mengidentifikasi tabel dengan hilang atau out-of-date statistik, jalankan SQL perintah berikut sebagai superuser. Hasilnya diurutkan dari tabel terbesar hingga terkecil.

Untuk mengidentifikasi tabel dengan hilang atau out-of-date statistik, jalankan SQL perintah berikut sebagai superuser. Hasilnya diurutkan dari tabel terbesar hingga terkecil.

SELECT ti.schema||'.'||ti."table" tablename, ti.size table_size_mb, ti.stats_off statistics_accuracy FROM svv_table_info ti WHERE ti.stats_off > 5.00 ORDER BY ti.size DESC;

Kiat implementasi

ANALYZEAmbang batas default adalah 10 persen. Default ini berarti bahwa ANALYZE perintah melewatkan tabel yang diberikan jika kurang dari 10 persen dari baris tabel telah berubah sejak yang terakhirANALYZE. Akibatnya, Anda dapat memilih untuk mengeluarkan ANALYZE perintah di akhir setiap ETL proses. Mengambil pendekatan ini berarti yang sering ANALYZE dilewati tetapi juga memastikan bahwa ANALYZE berjalan saat dibutuhkan.

ANALYZEstatistik memiliki dampak paling besar untuk kolom yang digunakan dalam gabungan (misalnya,JOIN tbl_a ON col_b) atau sebagai predikat (misalnya,WHERE col_b = 'xyz'). Secara default, ANALYZE mengumpulkan statistik untuk semua kolom dalam tabel yang ditentukan. Jika diperlukan, Anda dapat mengurangi waktu yang diperlukan untuk menjalankan ANALYZE dengan menjalankan ANALYZE hanya untuk kolom yang memiliki dampak paling besar. Anda dapat menjalankan SQL perintah berikut untuk mengidentifikasi kolom yang digunakan sebagai predikat. Anda juga dapat membiarkan Amazon Redshift memilih kolom mana yang akan dianalisis dengan menentukan. ANALYZE PREDICATE COLUMNS

WITH predicate_column_info as ( SELECT ns.nspname AS schema_name, c.relname AS table_name, a.attnum as col_num, a.attname as col_name, CASE WHEN 10002 = s.stakind1 THEN array_to_string(stavalues1, '||') WHEN 10002 = s.stakind2 THEN array_to_string(stavalues2, '||') WHEN 10002 = s.stakind3 THEN array_to_string(stavalues3, '||') WHEN 10002 = s.stakind4 THEN array_to_string(stavalues4, '||') ELSE NULL::varchar END AS pred_ts FROM pg_statistic s JOIN pg_class c ON c.oid = s.starelid JOIN pg_namespace ns ON c.relnamespace = ns.oid JOIN pg_attribute a ON c.oid = a.attrelid AND a.attnum = s.staattnum) SELECT schema_name, table_name, col_num, col_name, pred_ts NOT LIKE '2000-01-01%' AS is_predicate, CASE WHEN pred_ts NOT LIKE '2000-01-01%' THEN (split_part(pred_ts, '||',1))::timestamp ELSE NULL::timestamp END as first_predicate_use, CASE WHEN pred_ts NOT LIKE '%||2000-01-01%' THEN (split_part(pred_ts, '||',2))::timestamp ELSE NULL::timestamp END as last_analyze FROM predicate_column_info;

Untuk informasi selengkapnya, lihat Menganalisis tabel.

Aktifkan akselerasi kueri singkat

Akselerasi kueri singkat (SQA) memprioritaskan kueri jangka pendek yang dipilih sebelum kueri yang berjalan lebih lama. SQAmenjalankan kueri jangka pendek di ruang khusus, sehingga SQA kueri tidak dipaksa untuk menunggu dalam antrian di belakang kueri yang lebih panjang. SQAhanya memprioritaskan kueri yang berjalan singkat dan berada dalam antrian yang ditentukan pengguna. DenganSQA, kueri jangka pendek mulai berjalan lebih cepat dan pengguna melihat hasilnya lebih cepat.

Jika Anda mengaktifkanSQA, Anda dapat mengurangi atau menghilangkan antrian manajemen beban kerja (WLM) yang didedikasikan untuk menjalankan kueri singkat. Selain itu, kueri yang berjalan lama tidak perlu bersaing dengan kueri singkat untuk slot dalam antrian, sehingga Anda dapat mengonfigurasi antrian Anda untuk menggunakan lebih sedikit slot WLM kueri. Bila Anda menggunakan konkurensi yang lebih rendah, throughput kueri meningkat dan kinerja sistem secara keseluruhan ditingkatkan untuk sebagian besar beban kerja. Untuk informasi selengkapnya, lihat Akselerasi kueri pendek.

Analisis

Advisor memeriksa pola beban kerja dan melaporkan jumlah kueri terbaru yang SQA akan mengurangi latensi dan waktu antrian harian untuk kueri yang memenuhi syarat. SQA

Rekomendasi

Ubah WLM konfigurasi untuk dihidupkanSQA. Amazon Redshift menggunakan algoritma pembelajaran mesin untuk menganalisis setiap kueri yang memenuhi syarat. Prediksi meningkat saat SQA belajar dari pola kueri Anda. Untuk informasi selengkapnya, lihat Mengonfigurasi Manajemen Beban Kerja.

Saat Anda menghidupkanSQA, WLM atur runtime maksimum untuk kueri singkat ke dinamis secara default. Kami merekomendasikan untuk menjaga pengaturan dinamis untuk runtime SQA maksimum.

Kiat implementasi

Untuk memeriksa SQA apakah diaktifkan, jalankan kueri berikut. Jika query mengembalikan baris, maka SQA dihidupkan.

select * from stv_wlm_service_class_config where service_class = 14;

Untuk informasi selengkapnya, lihat Pemantauan SQA.

Mengubah kunci distribusi pada tabel

Amazon Redshift mendistribusikan baris tabel di seluruh cluster sesuai dengan gaya distribusi tabel. Tabel dengan KEY distribusi memerlukan kolom sebagai kunci distribusi (DISTKEY). Baris tabel ditugaskan ke irisan simpul cluster berdasarkan nilai DISTKEY kolomnya.

Tepat DISTKEY menempatkan jumlah baris yang sama pada setiap irisan node dan sering direferensikan dalam kondisi gabungan. Gabungan yang dioptimalkan terjadi ketika tabel digabungkan pada DISTKEY kolomnya, mempercepat kinerja kueri.

Analisis

Advisor menganalisis beban kerja klaster Anda untuk mengidentifikasi kunci distribusi yang paling tepat untuk tabel yang dapat memperoleh manfaat signifikan dari gaya distribusi. KEY

Rekomendasi

Advisor memberikan ALTER TABLE pernyataan yang mengubah DISTSTYLE dan DISTKEY tabel berdasarkan analisisnya. Untuk mewujudkan manfaat kinerja yang signifikan, pastikan untuk menerapkan semua SQL pernyataan dalam kelompok rekomendasi.

Mendistribusikan ulang meja besar dengan ALTER TABLE mengkonsumsi sumber daya cluster dan membutuhkan kunci meja sementara di berbagai waktu. Terapkan setiap grup rekomendasi saat beban kerja cluster lainnya ringan. Untuk detail selengkapnya tentang mengoptimalkan properti distribusi tabel, lihat Buku Pedoman Desain Tabel Lanjutan Amazon Redshift Engineering: Gaya Distribusi dan Kunci Distribusi.

Untuk informasi lebih lanjut tentang ALTER DISTSYLE danDISTKEY, lihatALTER TABLE.

catatan

Jika Anda tidak melihat rekomendasi yang tidak berarti bahwa gaya distribusi saat ini adalah yang paling tepat. Penasihat tidak memberikan rekomendasi ketika tidak ada cukup data atau manfaat redistribusi yang diharapkan kecil.

Rekomendasi penasihat berlaku untuk tabel tertentu dan tidak selalu berlaku untuk tabel yang berisi kolom dengan nama yang sama. Tabel yang berbagi nama kolom dapat memiliki karakteristik yang berbeda untuk kolom tersebut kecuali data di dalam tabel adalah sama.

Jika Anda melihat rekomendasi untuk tabel pementasan yang dibuat atau dihapus oleh ETL pekerjaan, ubah ETL proses Anda untuk menggunakan kunci distribusi yang direkomendasikan Advisor.

Ubah tombol sortir pada tabel

Amazon Redshift mengurutkan baris tabel sesuai dengan tombol pengurutan tabel. Penyortiran baris tabel didasarkan pada nilai kolom kunci sortir.

Mengurutkan tabel pada kunci pengurutan yang sesuai dapat mempercepat kinerja kueri, terutama yang memiliki predikat terbatas rentang, dengan membutuhkan lebih sedikit blok tabel untuk dibaca dari disk.

Analisis

Advisor menganalisis beban kerja klaster Anda selama beberapa hari untuk mengidentifikasi kunci pengurutan yang bermanfaat untuk tabel Anda.

Rekomendasi

Advisor menyediakan dua kelompok ALTER TABLE pernyataan yang mengubah kunci semacam tabel berdasarkan analisisnya:

  • Pernyataan yang mengubah tabel yang saat ini tidak memiliki kunci pengurutan untuk menambahkan kunci COMPOUND pengurutan.

  • Pernyataan yang mengubah kunci pengurutan dari INTERLEAVED ke COMPOUND atau tidak ada kunci pengurutan.

    Menggunakan kunci sortir majemuk secara signifikan mengurangi overhead pemeliharaan. Tabel dengan kunci sortir majemuk tidak memerlukan VACUUM REINDEX operasi mahal yang diperlukan untuk jenis interleaved. Dalam praktiknya, kunci pengurutan majemuk lebih efektif daripada kunci pengurutan yang disisipkan untuk sebagian besar beban kerja Amazon Redshift. Namun, jika tabel kecil, lebih efisien untuk tidak memiliki kunci pengurutan untuk menghindari overhead penyimpanan kunci sortir.

Saat menyortir tabel besar dengan ALTERTABLE, sumber daya cluster dikonsumsi dan kunci meja diperlukan pada berbagai waktu. Menerapkan setiap rekomendasi ketika beban kerja cluster moderat. Detail lebih lanjut tentang mengoptimalkan konfigurasi kunci pengurutan tabel dapat ditemukan di Buku Pedoman Desain Tabel Lanjutan Amazon Redshift Engineering: Compound and Interleaved Sort Keys.

Untuk informasi lebih lanjut tentang ALTERSORTKEY, lihatALTER TABLE.

catatan

Jika Anda tidak melihat rekomendasi untuk tabel, itu tidak berarti bahwa konfigurasi saat ini adalah yang terbaik. Penasihat tidak memberikan rekomendasi ketika tidak ada cukup data atau manfaat yang diharapkan dari penyortiran kecil.

Rekomendasi penasihat berlaku untuk tabel tertentu dan tidak selalu berlaku untuk tabel yang berisi kolom dengan nama dan tipe data yang sama. Tabel yang berbagi nama kolom dapat memiliki rekomendasi yang berbeda berdasarkan data dalam tabel dan beban kerja.

Mengubah pengkodean kompresi pada kolom

Kompresi adalah operasi tingkat kolom yang mengurangi ukuran data saat disimpan. Kompresi digunakan di Amazon Redshift untuk menghemat ruang penyimpanan dan meningkatkan kinerja kueri dengan mengurangi jumlah disk I/O. Kami merekomendasikan pengkodean kompresi optimal untuk setiap kolom berdasarkan tipe data dan pola kueri. Dengan kompresi optimal, kueri dapat berjalan lebih efisien dan database dapat mengambil ruang penyimpanan minimal.

Analisis

Advisor melakukan analisis beban kerja kluster dan skema database Anda secara terus-menerus untuk mengidentifikasi pengkodean kompresi optimal untuk setiap kolom tabel.

Rekomendasi

Advisor memberikan ALTER TABLE pernyataan yang mengubah pengkodean kompresi kolom tertentu, berdasarkan analisisnya.

Mengubah pengkodean kompresi kolom dengan ALTER TABLE mengkonsumsi sumber daya cluster dan membutuhkan kunci tabel pada berbagai waktu. Yang terbaik adalah menerapkan rekomendasi saat beban kerja cluster ringan.

Untuk referensi, ALTERTABLEcontoh menunjukkan beberapa pernyataan yang mengubah pengkodean untuk kolom.

catatan

Penasihat tidak memberikan rekomendasi ketika tidak ada cukup data atau manfaat yang diharapkan dari mengubah pengkodean kecil.

Rekomendasi tipe data

Amazon Redshift memiliki pustaka tipe SQL data untuk berbagai kasus penggunaan. Ini termasuk tipe integer seperti INT dan tipe untuk menyimpan karakter, sepertiVARCHAR. Redshift menyimpan jenis dengan cara yang dioptimalkan untuk menyediakan akses cepat dan kinerja kueri yang baik. Selain itu, Redshift menyediakan fungsi untuk tipe tertentu, yang dapat Anda gunakan untuk memformat atau melakukan perhitungan pada hasil kueri.

Analisis

Advisor melakukan analisis beban kerja klaster dan skema database Anda secara terus-menerus untuk mengidentifikasi kolom yang dapat memperoleh manfaat secara signifikan dari perubahan tipe data.

Rekomendasi

Advisor memberikan ALTER TABLE pernyataan yang menambahkan kolom baru dengan tipe data yang disarankan. UPDATEPernyataan yang menyertainya menyalin data dari kolom yang ada ke kolom baru. Setelah Anda membuat kolom baru dan memuat data, ubah kueri dan skrip konsumsi Anda untuk mengakses kolom baru. Kemudian manfaatkan fitur dan fungsi khusus untuk tipe data baru, ditemukan diSQLreferensi fungsi.

Menyalin data yang ada ke kolom baru dapat memakan waktu. Kami menyarankan Anda menerapkan setiap rekomendasi penasihat ketika beban kerja klaster ringan. Referensi daftar tipe data yang tersedia diJenis data.

Perhatikan bahwa Advisor tidak memberikan rekomendasi ketika tidak ada cukup data atau manfaat yang diharapkan dari mengubah tipe data kecil.