Memuat tabel dengan kompresi otomatis - Amazon Redshift

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 perintah COPY 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. Perintah COPY melakukan analisis kompresi. Anda juga dapat melakukan analisis kompresi tanpa memuat data atau mengubah kompresi pada tabel dengan menjalankan MENGANALISIS KOMPRESI perintah pada tabel yang sudah diisi. Misalnya, Anda dapat menjalankan ANALYSIS 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 pengkodean RAW jika Anda belum secara eksplisit mendefinisikan jenis pengkodean. ANALISIS KOMPRESI berperilaku sama. Untuk kinerja kueri yang optimal, pertimbangkan untuk menggunakan RAW untuk kunci pengurutan.

Cara kerja kompresi otomatis

Ketika parameter COMPUPDATE AKTIF, perintah COPY menerapkan kompresi otomatis setiap kali Anda menjalankan perintah COPY dengan tabel target kosong dan semua kolom tabel memiliki pengkodean RAW atau tidak ada pengkodean.

Untuk menerapkan kompresi otomatis ke tabel kosong, terlepas dari pengkodean kompresi saat ini, jalankan perintah COPY dengan opsi COMPUPDATE diatur ke ON. Untuk mematikan kompresi otomatis, jalankan perintah COPY dengan opsi COMPUPDATE diatur ke OFF.

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:

  1. Sampel awal baris dimuat dari file input. Ukuran sampel didasarkan pada nilai parameter COMPROWS. Defaultnya adalah 100.000.

  2. Opsi kompresi dipilih untuk setiap kolom.

  3. Baris sampel dihapus dari tabel.

  4. Tabel dibuat ulang dengan pengkodean kompresi yang dipilih.

  5. Seluruh file input dimuat dan dikompresi menggunakan pengkodean baru.

Setelah Anda menjalankan perintah COPY, 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 ANALYZE COMPRESSION, yang lebih efisien daripada menjalankan COPY lengkap. Kemudian Anda dapat mengevaluasi hasilnya untuk memutuskan apakah akan menggunakan kompresi otomatis atau membuat ulang tabel secara manual.

Kompresi otomatis hanya didukung untuk perintah COPY. 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 database TICKIT berisi salinan tabel LISTING yang disebut BIGLIST, dan Anda ingin menerapkan kompresi otomatis ke tabel ini ketika dimuat dengan sekitar 3 juta baris.

Untuk memuat dan secara otomatis mengompres tabel
  1. Pastikan meja kosong. Anda dapat menerapkan kompresi otomatis hanya ke tabel kosong:

    TRUNCATE biglist;
  2. Muat tabel dengan satu perintah COPY. Meskipun tabel kosong, beberapa pengkodean sebelumnya mungkin telah ditentukan. Untuk memfasilitasi Amazon Redshift melakukan analisis kompresi, atur parameter COMPUPDATE 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 opsi COMPROWS yang ditentukan, ukuran sampel default dan yang direkomendasikan 100.000 baris per irisan digunakan.

  3. Lihatlah skema baru untuk tabel BIGLIST 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
  4. Verifikasi bahwa jumlah baris yang diharapkan dimuat:

    select count(*) from biglist; count --------- 3079952 (1 row)

Ketika baris kemudian ditambahkan ke tabel ini menggunakan pernyataan COPY atau INSERT, pengkodean kompresi yang sama diterapkan.