Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memuat tabel dengan kompresi otomatis
Anda dapat menerapkan pengkodean kompresi ke kolom dalam tabel secara manual, berdasarkan evaluasi data Anda sendiri. Atau Anda dapat menggunakan COPY perintah dengan COMPUPDATE diatur ke ON untuk menganalisis dan menerapkan kompresi secara otomatis berdasarkan data sampel.
Anda dapat menggunakan kompresi otomatis saat membuat dan memuat tabel baru. COPYPerintah melakukan analisis kompresi. Anda juga dapat melakukan analisis kompresi tanpa memuat data atau mengubah kompresi pada tabel dengan menjalankan ANALYZE COMPRESSION perintah pada tabel yang sudah diisi. Misalnya, Anda dapat menjalankan ANALYZE COMPRESSION ketika Anda ingin menganalisis kompresi pada tabel untuk penggunaan masa depan, sambil mempertahankan pernyataan bahasa definisi data (DDL) yang ada.
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 melewatkan fase analisis data pada kolom kunci sortir dan mempertahankan jenis pengkodean yang ditentukan pengguna.
Kompresi otomatis memilih RAW pengkodean jika Anda belum secara eksplisit mendefinisikan jenis pengkodean. ANALYZECOMPRESSIONberperilaku sama. Untuk kinerja kueri yang optimal, pertimbangkan RAW untuk menggunakan kunci pengurutan.
Cara kerja kompresi otomatis
Ketika COMPUPDATE parameter AKTIF, COPY perintah menerapkan kompresi otomatis setiap kali Anda menjalankan COPY perintah dengan tabel target kosong dan semua kolom tabel memiliki RAW pengkodean atau tidak ada pengkodean.
Untuk menerapkan kompresi otomatis ke tabel kosong, terlepas dari pengkodean kompresi saat ini, jalankan COPY perintah dengan COMPUPDATE opsi yang disetel ke ON. Untuk mematikan kompresi otomatis, jalankan COPY perintah dengan COMPUPDATE opsi yang disetel keOFF.
Anda tidak dapat menerapkan kompresi otomatis ke tabel yang sudah berisi data.
catatan
Analisis kompresi otomatis membutuhkan baris yang cukup dalam data beban (setidaknya 100.000 baris per irisan) untuk menghasilkan sampel yang bermakna.
Kompresi otomatis melakukan operasi ini di latar belakang sebagai bagian dari transaksi beban:
-
Sampel awal baris dimuat dari file input. Ukuran sampel didasarkan pada nilai COMPROWS parameter. Defaultnya adalah 100.000.
-
Opsi kompresi dipilih untuk setiap kolom.
-
Baris sampel dihapus dari tabel.
-
Tabel dibuat ulang dengan pengkodean kompresi yang dipilih.
-
Seluruh file input dimuat dan dikompresi menggunakan pengkodean baru.
Setelah Anda menjalankan COPY perintah, tabel dimuat penuh, dikompresi, dan siap digunakan. Jika Anda memuat lebih banyak data nanti, baris yang ditambahkan dikompresi sesuai dengan pengkodean yang ada.
Jika Anda hanya ingin melakukan analisis kompresi, jalankan ANALYZECOMPRESSION, yang lebih efisien daripada menjalankan penuhCOPY. Kemudian Anda dapat mengevaluasi hasilnya untuk memutuskan apakah akan menggunakan kompresi otomatis atau membuat ulang tabel secara manual.
Kompresi otomatis hanya didukung untuk COPY perintah. Atau, Anda dapat menerapkan pengkodean kompresi secara manual saat membuat tabel. Untuk informasi tentang pengkodean kompresi manual, lihatKompresi kolom untuk mengurangi ukuran data yang disimpan.
Contoh kompresi otomatis
Dalam contoh ini, asumsikan bahwa TICKIT database berisi salinan LISTING tabel yang disebutBIGLIST, dan Anda ingin menerapkan kompresi otomatis ke tabel ini ketika dimuat dengan sekitar 3 juta baris.
Untuk memuat dan secara otomatis mengompres tabel
-
Pastikan meja kosong. Anda dapat menerapkan kompresi otomatis hanya ke tabel kosong:
TRUNCATE biglist;
-
Muat tabel dengan satu COPY perintah. Meskipun tabel kosong, beberapa pengkodean sebelumnya mungkin telah ditentukan. Untuk memfasilitasi Amazon Redshift melakukan analisis kompresi, atur COMPUPDATE parameter ke ON.
COPY biglist FROM 's3://amzn-s3-demo-bucket/biglist.txt' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' DELIMITER '|' COMPUPDATE ON;
Karena tidak ada COMPROWS opsi yang ditentukan, ukuran sampel default dan yang direkomendasikan 100.000 baris per irisan digunakan.
-
Lihatlah skema baru untuk BIGLIST tabel untuk meninjau skema pengkodean yang dipilih secara otomatis.
SELECT "column", type, encoding from pg_table_def where tablename = 'biglist';
Column | Type | Encoding ----------------+-----------------------------+---------- listid | integer | az64 sellerid | integer | az64 eventid | integer | az64 dateid | smallint | none numtickets | smallint | az64 priceperticket | numeric(8,2) | az64 totalprice | numeric(8,2) | az64 listtime | timestamp without time zone | az64
-
Verifikasi bahwa jumlah baris yang diharapkan dimuat:
select count(*) from biglist;
count --------- 3079952 (1 row)
Ketika baris kemudian ditambahkan ke tabel ini menggunakan COPY atau INSERT pernyataan, pengkodean kompresi yang sama diterapkan.