Untuk meningkatkan efisiensi kompresi IMCI dan mengurangi biaya penyimpanan, Anda dapat mengatur algoritma kompresi untuk IMCI. Dokumen ini menjelaskan cara mengatur dan memodifikasi algoritma kompresi untuk IMCI.
Algoritma kompresi yang didukung
PolarDB for MySQL mendukung dua algoritma kompresi IMCI: LZ4 dan ZSTD.
LZ4: algoritma kompresi data tanpa kehilangan informasi dengan kecepatan kompresi lebih dari 500 MB/s per core. Untuk informasi lebih lanjut, lihat LZ4 GitHub.
ZSTD (atau Zstandard): algoritma kompresi data tanpa kehilangan informasi dengan kecepatan kompresi serupa dengan LZ4. Untuk informasi lebih lanjut, lihat Zstandard GitHub.
Atur algoritma kompresi saat membuat tabel
Sintaks:
Ketika mengeksekusi pernyataan CREATE TABLE untuk membuat tabel, Anda dapat menentukan parameter codec_opt di dalam bidang COMMENT untuk mengatur algoritma kompresi.
COMMENT 'COLUMNAR=1 codec_opt={LZ4}'Nilai valid untuk parameter codec_opt:
LZ4,ZSTD, danNONE, yang sesuai dengan kompresi LZ4, kompresi ZSTD, dan tanpa kompresi.CatatanParameter imci_default_codec mendefinisikan algoritma kompresi default. Jika parameter codec_opt di dalam bidang COMMENT menggunakan algoritma kompresi default, algoritma kompresi ditentukan oleh parameter imci_default_codec. Nilai default dari parameter imci_default_codec adalah ZSTD.
Anda dapat mengeksekusi pernyataan SET untuk memodifikasi nilai parameter imci_default_codec pada tingkat sesi.
Algoritma kompresi yang ditentukan di dalam bidang COMMENT sebuah tabel diterapkan ke semua IMCI tabel tersebut. Jika algoritma kompresi juga diatur di dalam bidang COMMENT kolom, algoritma kompresi IMCI yang berlaku untuk kolom tersebut memiliki prioritas lebih tinggi.
Contoh:
CREATE TABLE t12( col1 INT, col2 DATETIME, col3 VARCHAR(200) ) ENGINE InnoDB COMMENT 'COLUMNAR=1 codec_opt={LZ4}'; SET imci_default_codec="{LZ4}"; CREATE TABLE t13( col1 INT COMMENT 'codec_opt={NONE}', col2 DATETIME, col3 VARCHAR(200) 'codec_opt={ZSTD}' ) ENGINE InnoDB COMMENT 'COLUMNAR=1';Dalam contoh sebelumnya:
Algoritma kompresi default yang ditentukan di dalam bidang COMMENT tabel
t12adalah LZ4. Oleh karena itu, data di kolom col1, col2, dan col3 menggunakan algoritma kompresi LZ4.Tidak ada algoritma kompresi yang diatur untuk tabel
t13. Kompresi dinonaktifkan untuk kolom col1. Parameter codec_opt tidak diatur untuk kolom col2, sehingga algoritma kompresi LZ4 yang ditentukan oleh parameter imci_default_codec digunakan. Kolom col3 menggunakan algoritma kompresi ZSTD karena string codec_opt={ZSTD} ditambahkan untuk kolom col3 dan algoritma kompresi yang ditentukan untuk kolom memiliki prioritas lebih tinggi daripada algoritma kompresi yang ditentukan oleh parameter imci_default_codec.
Modifikasi algoritma kompresi IMCI yang berlaku untuk kolom
Anda tidak dapat memodifikasi algoritma kompresi IMCI yang berlaku untuk kolom. Untuk tujuan ini, Anda harus menghapus data asli kolom tersebut, lalu gunakan pernyataan pembuatan tabel untuk menentukan algoritma kompresi baru IMCI yang berlaku untuk kolom tersebut. Modifikasi metode kompresi IMCI yang berlaku untuk kolom akan tersedia nanti.
Contoh:
CREATE TABLE t14(
col1 INT COMMENT 'COLUMNAR=1 codec_opt={ZSTD}',
col2 DATETIME COMMENT 'COLUMNAR=1 codec_opt={ZSTD}',
col3 VARCHAR(200)
) ENGINE InnoDB;
-- Modifikasi algoritma kompresi IMCI yang berlaku untuk kolom.
ALTER TABLE t14 COMMENT 'COLUMNAR=1', MODIFY COLUMN col2 DATETIME COMMENT 'codec_opt={LZ4}';Dalam contoh sebelumnya, IMCI dibuat untuk kolom col2 di dalam tabel t14, dan algoritma kompresinya adalah ZSTD. Jika Anda mengeksekusi pernyataan ALTER TABLE untuk mencoba memodifikasi algoritma kompresi menjadi LZ4, algoritma kompresi baru tidak langsung berlaku, tetapi ketika Anda merekonstruksi data. Algoritma kompresi asli digunakan untuk data yang sudah ada dan data yang ditambahkan kemudian karena pernyataan ALTER TABLE tidak memicu operasi rekonstruksi data.