IMCIの圧縮効率を向上させ、ストレージコストを削減するために、IMCIの圧縮アルゴリズムを設定できます。 このトピックでは、IMCIの圧縮アルゴリズムを設定および変更する方法について説明します。
サポートされている圧縮アルゴリズム
PolarDB for MySQLは、LZ4とZSTDの2つのIMCI圧縮アルゴリズムをサポートしています。
LZ4: コア当たり500メガバイト/秒を超える圧縮速度を有する可逆データ圧縮アルゴリズム。 詳細については、『LZ4 GitHub』をご参照ください。
ZSTD (またはZstandard): LZ4と同様の圧縮速度を有する可逆データ圧縮アルゴリズム。 詳細については、『Zstandard GitHub』をご参照ください。
テーブルを作成するときに圧縮アルゴリズムを設定する
構文:
CREATE TABLE文を実行してテーブルを作成する場合、COMMENTフィールドにcodec_optパラメーターを指定して圧縮アルゴリズムを設定できます。
コメント 'COLUMNAR=1 codec_opt={LZ4}'codec_optパラメーターの有効値:
LZ4、ZSTD、およびNONE。LZ4圧縮、ZSTD圧縮、および圧縮なしに対応します。説明imci_default_codecパラメーターは、デフォルトの圧縮アルゴリズムを定義します。 COMMENTフィールドのcodec_optパラメーターがデフォルトの圧縮アルゴリズムを使用する場合、圧縮アルゴリズムはimci_default_codecパラメーターによって定義されます。 imci_default_codecパラメーターのデフォルト値はZSTDです。
SETステートメントを実行して、セッションレベルでimci_default_codecパラメーターの値を変更できます。
テーブルのCOMMENTフィールドで指定された圧縮アルゴリズムは、テーブルのすべてのIMCIに適用されます。 列のCOMMENTフィールドにも圧縮アルゴリズムが設定されている場合、その列に有効なIMCIの圧縮アルゴリズムが優先されます。
例:
テーブルt12の作成 ( col1 INT、 col2 DATETIME、 col3 VARCHAR(200) ) エンジンInnoDBコメント 'COLUMNAR=1 codec_opt={LZ4}'; SET imci_default_codec="{LZ4}"; テーブルt13の作成 ( col1 INT COMMENT 'codec_opt={NONE}'、 col2 DATETIME、 col3 VARCHAR(200) 'codec_opt={ZSTD}' ) エンジンInnoDBコメント 'COLUMNAR=1 ';上記の例の説明は、次のとおりです。
t12テーブルのCOMMENTフィールドに指定されたデフォルトの圧縮アルゴリズムはLZ4です。 したがって、col1、col2、col3列のデータはLZ4圧縮アルゴリズムを使用します。t13テーブルには圧縮アルゴリズムは設定されていません。 col1列の圧縮は無効です。 col2列にはcodec_optパラメーターが設定されていないため、imci_default_codecパラメーターで指定されたLZ4圧縮アルゴリズムが使用されます。 col3列にはcodec_opt={ZSTD} の文字列が追加され、列に指定された圧縮アルゴリズムがimci_default_codecパラメーターで指定された圧縮アルゴリズムよりも優先度が高いため、col3列はZSTD圧縮アルゴリズムを使用します。
列に有効なIMCIの圧縮アルゴリズムを変更する
列に有効なIMCIの圧縮アルゴリズムを変更することはできません。 このためには、列の元のデータを削除し、テーブル作成ステートメントを使用して、列に有効なIMCIの新しい圧縮アルゴリズムを指定する必要があります。 列に有効なIMCIの圧縮方法の変更は、後で利用可能になります。
例:
テーブルt14の作成 (
col1 INT COMMENT 'COLUMNAR=1 codec_opt={ZSTD}'、
col2 DATETIMEコメント 'COLUMNAR=1 codec_opt={ZSTD}'、
col3 VARCHAR(200)
) エンジンInnoDB;
-- 列に有効なIMCIの圧縮アルゴリズムを変更します。
ALTER TABLE t14コメント 'COLUMNAR=1 ', MODIFY COLUMN col2日付コメント 'codec_opt={LZ4}'; 上記の例では、t14テーブルのcol2列にIMCIが作成され、圧縮アルゴリズムはZSTDです。 ALTER TABLEステートメントを実行して圧縮アルゴリズムをLZ4に変更しようとすると、新しい圧縮アルゴリズムはすぐには有効になりませんが、データを再構築するときに有効になります。 ALTER TABLEステートメントはデータの再構築操作をトリガーしないため、元の圧縮アルゴリズムは既存のデータとその後追加されるデータに使用されます。