Sebagian besar pengkodean - Amazon Redshift

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

Sebagian besar pengkodean

Sebagian besar pengkodean berguna ketika tipe data untuk kolom lebih besar dari yang dibutuhkan sebagian besar nilai yang disimpan. Dengan menentukan sebagian besar pengkodean untuk jenis kolom ini, Anda dapat mengompres sebagian besar nilai di kolom ke ukuran penyimpanan standar yang lebih kecil. Nilai yang tersisa yang tidak dapat dikompresi disimpan dalam bentuk mentahnya. Misalnya, Anda dapat mengompres kolom 16-bit, seperti kolom INT2, ke penyimpanan 8-bit.

Secara umum, sebagian besar pengkodean bekerja dengan tipe data berikut:

  • KECIL/INT2 (16-bit)

  • INTEGER/INT (32-bit)

  • BESAR/INT8 (64-bit)

  • DESIMAL/NUMERIK (64-bit)

Pilih variasi yang sesuai dari sebagian besar pengkodean agar sesuai dengan ukuran tipe data untuk kolom. Misalnya, terapkan MOSTLY8 ke kolom yang didefinisikan sebagai kolom integer 16-bit. Menerapkan MOSTLY16 ke kolom dengan tipe data 16-bit atau MOSTLY32 ke kolom dengan tipe data 32-bit tidak diperbolehkan.

Sebagian besar pengkodean mungkin kurang efektif daripada tidak ada kompresi ketika jumlah nilai yang relatif tinggi dalam kolom tidak dapat dikompresi. Sebelum menerapkan salah satu pengkodean ini ke kolom, lakukan pemeriksaan. Sebagian besar nilai yang akan Anda muat sekarang (dan kemungkinan akan dimuat di masa depan) harus sesuai dengan rentang yang ditunjukkan pada tabel berikut.

Encoding Ukuran penyimpanan terkompresi Rentang nilai yang dapat dikompresi (nilai di luar rentang disimpan mentah)
SEBAGIAN BESAR 8 1 byte (8 bit) -128 hingga 127
SEBAGIAN BESAR 16 2 byte (16 bit) -32768 ke 32767
SEBAGIAN BESAR 32 4 byte (32 bit) -2147483648 ke +2147483647
catatan

Untuk nilai desimal, abaikan titik desimal untuk menentukan apakah nilainya cocok dengan rentang. Misalnya, 1.234,56 diperlakukan sebagai 123.456 dan dapat dikompresi dalam kolom MOSTLY32.

Misalnya, kolom VENUEID dalam tabel VENUE didefinisikan sebagai kolom integer mentah, yang berarti nilainya mengkonsumsi 4 byte penyimpanan. Namun, rentang nilai saat ini di kolom adalah 0 untuk309. Oleh karena itu, membuat ulang dan memuat ulang tabel ini dengan pengkodean MOSTLY16 untuk VENUEID akan mengurangi penyimpanan setiap nilai di kolom itu menjadi 2 byte.

Jika nilai VENUEID yang direferensikan dalam tabel lain sebagian besar berada dalam kisaran 0 hingga 127, mungkin masuk akal untuk menyandikan kolom kunci asing itu sebagai MOSTLY8. Sebelum membuat pilihan, jalankan beberapa kueri terhadap data tabel referensi untuk mengetahui apakah nilai sebagian besar jatuh ke dalam kisaran 8-bit, 16-bit, atau 32-bit.

Tabel berikut menunjukkan ukuran terkompresi untuk nilai numerik tertentu ketika pengkodean MOSTLY8, MOSTLY16, dan MOSTLY32 digunakan:

Nilai asli Ukuran INT atau BIGINT asli (byte) MOSTLY8 ukuran terkompresi (byte) MOSTLY16 ukuran terkompresi (byte) MOSTLY32 ukuran terkompresi (byte)
1 4 1 2 4
10 4 1 2 4
100 4 1 2 4
1000 4 Sama seperti ukuran data mentah 2 4
10000 4 2 4
20000 4 2 4
40000 8 Sama seperti ukuran data mentah 4
100000 8 4
2000000000 8 4