

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Praktik terbaik Amazon Redshift untuk mendesain tabel
<a name="c_designing-tables-best-practices"></a>

Saat Anda merencanakan database Anda, keputusan desain tabel kunci tertentu sangat memengaruhi kinerja kueri secara keseluruhan. Pilihan desain ini juga memiliki efek signifikan pada persyaratan penyimpanan, yang pada gilirannya mempengaruhi kinerja kueri dengan mengurangi jumlah operasi I/O dan meminimalkan memori yang diperlukan untuk memproses kueri.

Di bagian ini, Anda dapat menemukan ringkasan keputusan desain yang paling penting dan praktik terbaik untuk mengoptimalkan kinerja kueri. [Optimalisasi tabel otomatis](t_Creating_tables.md)memberikan penjelasan yang lebih rinci dan contoh opsi desain tabel.

**Topics**
+ [Pilih tombol sortir terbaik](c_best-practices-sort-key.md)
+ [Pilih gaya distribusi terbaik](c_best-practices-best-dist-key.md)
+ [Biarkan COPY memilih pengkodean kompresi](c_best-practices-use-auto-compression.md)
+ [Tentukan kendala kunci primer dan kunci asing](c_best-practices-defining-constraints.md)
+ [Gunakan ukuran kolom sekecil mungkin](c_best-practices-smallest-column-size.md)
+ [Gunakan tipe date/time data untuk kolom tanggal](c_best-practices-timestamp-date-columns.md)

# Pilih tombol sortir terbaik
<a name="c_best-practices-sort-key"></a>

Amazon Redshift menyimpan data Anda pada disk dalam urutan yang diurutkan sesuai dengan kunci sortir. Pengoptimal kueri Amazon Redshift menggunakan urutan pengurutan saat menentukan paket kueri yang optimal. 

**catatan**  
Saat Anda menggunakan optimasi tabel otomatis, Anda tidak perlu memilih kunci pengurutan tabel Anda. Untuk informasi selengkapnya, lihat [Optimalisasi tabel otomatis](t_Creating_tables.md).

Beberapa saran untuk pendekatan terbaik berikut:
+ Agar Amazon Redshift memilih urutan pengurutan yang sesuai, tentukan kunci `AUTO` sortir. 
+ Jika data terbaru paling sering ditanyakan, tentukan kolom stempel waktu sebagai kolom utama untuk kunci pengurutan. 

  Kueri lebih efisien karena mereka dapat melewati seluruh blok yang berada di luar rentang waktu.
+ Jika Anda sering melakukan pemfilteran rentang atau pemfilteran kesetaraan pada satu kolom, tentukan kolom itu sebagai kunci pengurutan. 

   Amazon Redshift dapat melewatkan membaca seluruh blok data untuk kolom itu. Ini dapat melakukannya karena melacak nilai kolom minimum dan maksimum yang disimpan di setiap blok dan dapat melewati blok yang tidak berlaku untuk rentang predikat.
+ Jika Anda sering bergabung dengan tabel, tentukan kolom gabungan sebagai kunci sortir dan kunci distribusi. 

  Melakukan hal ini memungkinkan pengoptimal kueri untuk memilih gabungan penggabungan pengurutan alih-alih bergabung dengan hash yang lebih lambat. Karena data sudah diurutkan pada kunci join, pengoptimal kueri dapat melewati fase sort merge join.

# Pilih gaya distribusi terbaik
<a name="c_best-practices-best-dist-key"></a>

Saat Anda menjalankan kueri, pengoptimal kueri mendistribusikan ulang baris ke node komputasi sesuai kebutuhan untuk melakukan gabungan dan agregasi apa pun. Tujuan dalam memilih gaya distribusi tabel adalah untuk meminimalkan dampak dari langkah redistribusi dengan menemukan data di tempat yang diperlukan sebelum kueri dijalankan. 

**catatan**  
Bila Anda menggunakan optimasi tabel otomatis, Anda tidak perlu memilih gaya distribusi tabel Anda. Untuk informasi selengkapnya, lihat [Optimalisasi tabel otomatis](t_Creating_tables.md).

Beberapa saran untuk pendekatan terbaik berikut:

1. Bagikan tabel fakta dan satu tabel dimensi pada kolom umum mereka.

   Tabel fakta Anda hanya dapat memiliki satu kunci distribusi. Setiap tabel yang bergabung pada kunci lain tidak ditempatkan dengan tabel fakta. Pilih satu dimensi untuk dikolokasikan berdasarkan seberapa sering digabungkan dan ukuran baris yang bergabung. Tentukan kunci utama tabel dimensi dan kunci asing yang sesuai dengan tabel fakta sebagai DISTKEY. 

1. Pilih dimensi terbesar berdasarkan ukuran kumpulan data yang difilter. 

   Hanya baris yang digunakan dalam gabungan yang harus didistribusikan, jadi pertimbangkan ukuran kumpulan data setelah pemfilteran, bukan ukuran tabel. 

1. Pilih kolom dengan kardinalitas tinggi di set hasil yang difilter. 

   Jika Anda mendistribusikan tabel penjualan pada kolom tanggal, misalnya, Anda mungkin harus mendapatkan distribusi data yang cukup merata, kecuali sebagian besar penjualan Anda bersifat musiman. Namun, jika Anda biasanya menggunakan predikat terbatas rentang untuk memfilter untuk periode tanggal yang sempit, sebagian besar baris yang difilter terjadi pada kumpulan irisan terbatas dan beban kerja kueri miring. 

1. Ubah beberapa tabel dimensi untuk menggunakan distribusi ALL.

   Jika tabel dimensi tidak dapat ditempatkan dengan tabel fakta atau tabel gabungan penting lainnya, Anda dapat meningkatkan kinerja kueri secara signifikan dengan mendistribusikan seluruh tabel ke semua node. Menggunakan distribusi ALL melipatgandakan kebutuhan ruang penyimpanan dan meningkatkan waktu muat dan operasi pemeliharaan, jadi Anda harus mempertimbangkan semua faktor sebelum memilih distribusi ALL.

Agar Amazon Redshift memilih gaya distribusi yang sesuai, tentukan `AUTO` gaya distribusi. 

Untuk informasi selengkapnya tentang memilih gaya distribusi, lihat[Distribusi data untuk optimasi kueri](t_Distributing_data.md).

# Biarkan COPY memilih pengkodean kompresi
<a name="c_best-practices-use-auto-compression"></a>

Anda dapat menentukan pengkodean kompresi saat Anda membuat tabel, tetapi dalam kebanyakan kasus, kompresi otomatis menghasilkan hasil terbaik.

ENCODE AUTO adalah default untuk tabel. Saat tabel diatur ke ENCODE AUTO, Amazon Redshift secara otomatis mengelola pengkodean kompresi untuk semua kolom dalam tabel. Untuk informasi selengkapnya, lihat [CREATE TABLE](r_CREATE_TABLE_NEW.md) dan [ALTER TABLE](r_ALTER_TABLE.md).

Perintah COPY menganalisis data Anda dan menerapkan pengkodean kompresi ke tabel kosong secara otomatis sebagai bagian dari operasi beban. 

Kompresi otomatis menyeimbangkan kinerja keseluruhan saat memilih pengkodean kompresi. Pemindaian terbatas rentang mungkin berkinerja buruk jika kolom kunci pengurutan dikompresi jauh lebih tinggi daripada kolom lain dalam kueri yang sama. Akibatnya, kompresi otomatis memilih pengkodean kompresi yang kurang efisien untuk menjaga kolom kunci sortir seimbang dengan kolom lain.

Misalkan kunci pengurutan tabel Anda adalah tanggal atau stempel waktu dan tabel menggunakan banyak kolom varchar besar. Dalam hal ini, Anda mungkin mendapatkan kinerja yang lebih baik dengan tidak mengompresi kolom kunci sortir sama sekali. Jalankan [MENGANALISIS KOMPRESI](r_ANALYZE_COMPRESSION.md) perintah di atas meja, lalu gunakan pengkodean untuk membuat tabel baru, tetapi tinggalkan pengkodean kompresi untuk kunci pengurutan.

Ada biaya kinerja untuk pengkodean kompresi otomatis, tetapi hanya jika tabel kosong dan belum memiliki pengkodean kompresi. Untuk tabel dan tabel berumur pendek yang sering Anda buat, seperti tabel pementasan, muat tabel sekali dengan kompresi otomatis atau jalankan perintah ANALYZE COMPRESSION. Kemudian gunakan pengkodean tersebut untuk membuat tabel baru. Anda dapat menambahkan pengkodean ke pernyataan CREATE TABLE, atau menggunakan CREATE TABLE LIKE untuk membuat tabel baru dengan pengkodean yang sama. 

Untuk informasi selengkapnya, lihat [Memuat tabel dengan kompresi otomatis](c_Loading_tables_auto_compress.md).

# Tentukan kendala kunci primer dan kunci asing
<a name="c_best-practices-defining-constraints"></a>

Tentukan kunci primer dan kendala kunci asing antara tabel di mana pun sesuai. Meskipun hanya bersifat informasi, pengoptimal kueri menggunakan batasan tersebut untuk menghasilkan rencana kueri yang lebih efisien.

Jangan mendefinisikan kunci utama dan kendala kunci asing kecuali aplikasi Anda memberlakukan kendala. Amazon Redshift tidak memberlakukan batasan unik, kunci utama, dan kunci asing. 

Lihat [Kendala tabel](t_Defining_constraints.md) untuk informasi tambahan tentang cara Amazon Redshift menggunakan kendala.

# Gunakan ukuran kolom sekecil mungkin
<a name="c_best-practices-smallest-column-size"></a>

Jangan menjadikannya praktik untuk menggunakan ukuran kolom maksimum untuk kenyamanan. 

Sebagai gantinya, pertimbangkan nilai terbesar yang mungkin Anda simpan di kolom Anda dan ukurannya sesuai. Misalnya, kolom CHAR untuk menyimpan singkatan negara bagian dan teritori AS yang digunakan oleh kantor pos hanya perlu CHAR (2).

# Gunakan tipe date/time data untuk kolom tanggal
<a name="c_best-practices-timestamp-date-columns"></a>

Amazon Redshift menyimpan data DATE dan TIMESTAMP lebih efisien daripada CHAR atau VARCHAR, yang menghasilkan kinerja kueri yang lebih baik. Gunakan tipe data DATE atau TIMESTAMP, tergantung pada resolusi yang Anda butuhkan, bukan tipe karakter saat menyimpan informasi tanggal/waktu. Untuk informasi selengkapnya, lihat [Jenis Datetime](r_Datetime_types.md).