tencent cloud

TDSQL-C for MySQL

動向とお知らせ
製品アップデート
製品お知らせ
初心者ガイド
製品概要
プロダクト概要
製品の強み
適用シーン
製品アーキテクチャ
製品仕様
インスタンスタイプ
製品機能一覧
データベースのバージョン
リージョンとアベイラビリティゾーン
基本概念
利用制限
利用ガイドの推奨事項
自社開発カーネル
カーネル概要
カーネルバージョンのアップデート情報
カーネル最適化バージョン
機能特性
パフォーマンス関連機能
セキュリティカテゴリの機能
安定性機能
分析エンジン特性
カーネル問題のチェックと修復
購入ガイド
課金概要
製品価格
クラスタを作成する
構成変更説明
未払いについての説明
継続支払いの説明
返金ポリシー
従量課金から年/月単位サブスクリプションへの変換
従量課金からServerlessへの変換
付加価値サービスの課金説明
料金請求書の確認
クイックスタート
データベース監査
概要
監査インスタンス一覧
監査サービスを有効化する
監査ログの確認
ログ配信
事後アラーム設定
監査ルールの変更
監査サービスを変更する
監査サービスを停止する
監査ルールテンプレート
監査タスクの照会
サブユーザーへのデータベース監査利用権限付与
Serverlessサービス
Serverless入門
サーバーレス版クラスタの作成と管理
伸縮性スケーリング管理ツール
Serverlessリソースパック
マルチAZデプロイ
設定を変更する
よくあるご質問
Serverlessコスト見積ツール
操作ガイド
操作概要
コンソールでのクラスタページビューの切り替え
データベース接続
インスタンス管理
設定を変更する
インスタンス形態管理
クラスタ管理
読み取り専用インスタンス管理 
データベースプロキシ
アカウント管理
DMC
DMC(データベース管理ツール)
パラメータ設定
マルチAZデプロイ
グローバルデータベース
バックアップとリストア
操作ログ
データマイグレーション
パラレルクエリ
列ストレージインデックス CSI
分析エンジン
データベースセキュリティと暗号化
モニタリングとアラーム
SQLの基本操作
以下のコマンドを実行して、TDSQL-C for MySQLに接続してログインします
Tag
実践チュートリアル
TDSQL-C for MySQL データベース監査の等級保護実践
非InnoDBテーブル問題のワンクリック移行検出処理方法
DTSによるデータベースバージョンのアップグレード MySQL 5.7から8.0へ
TDSQL-C for MySQL 使用規範
新版コンソール
データベースプロキシの複数接続アドレスによる複数ROグループの実現
データベースプロキシのメリット
ストレージの課金モードの選び方
DTSによるリモートディザスタリカバリの構築
クラスタ用VPCの作成
データ復旧の方法
CPU使用率の高騰問題の解決方法
サブユーザーへの監視データ閲覧権限付与方法
ホワイトペーパー
セキュリティホワイトペーパー
性能ホワイトペーパー
トラブルシューティング
接続関連
性能関連
よくあるご質問
基本概念
購入と課金
サポートされるフォーマット
接続とネットワーク
機能特性
コンソールの操作
データベーステーブル
パフォーマンスとログ
データベース監査
TDSQL-C for MySQLとTencentDB for MySQLの違い
関連契約
SLA
利用規約
TDSQL-C ポリシー
プライバシーポリシー
データ処理と安全プロトコル
汎用参考
標準と認証
用語一覧
お問い合わせ

列圧縮

PDF
フォーカスモード
フォントサイズ
最終更新日: 2025-12-30 16:14:39

機能説明

現在、行形式向けの圧縮とデータページ向けの圧縮がありますが、これらの二つの圧縮方式は、一つのテーブル内のいくつかの大きいフィールドと他の多くの小さいフィールドを処理する際に、小さいフィールドへの読み書きが非常に頻繁で、大きいフィールドへのアクセスが頻繁でない状況において、読み書きアクセス時に多くの不要な計算リソースの浪費を引き起こします。
列圧縮機能は、アクセス頻度の低いサイズの大きいフィールドのみを圧縮し、アクセス頻度の高いサイズの小さいフィールドは圧縮しないように設計されています。これにより、行全体のフィールドのストレージスペースを削減できるだけでなく、読み書きアクセスの効率をさらに向上させることができます。
例えば、従業員テーブル:create table employee(id int, age int, gender boolean, other varchar(1000) primary key (id))において、id、age、genderといったサイズの小さいフィールドへのアクセスが比較的頻繁である一方、otherのようなサイズの大きいフィールドへのアクセス頻度が低い場合、other列を圧縮列として作成できます。一般的に、otherへの読み書きのみが当該列の圧縮と解凍をトリガーし、他の列へのアクセスでは当該列の圧縮・解凍は発生しません。これにより、行データストレージのサイズをさらに削減でき、アクセス頻度の高い小さいフィールドはより高速なアクセスが実現でき、アクセス頻度の低い大きいフィールドのストレージ容量をさらに削減することができます。

サポートバージョン

カーネルバージョン TXSQL 8.0 3.1.15.002以上です。
説明:
カーネルバージョン TXSQL 8.0 3.1.15.002以上の列圧縮機能はデフォルトで有効になっています。
カーネルバージョン TXSQL 5.7 は列圧縮機能を現在サポートしていません。

適用シーン

テーブル内にいくつかの大きなフィールドと多数の小さなフィールドが存在し、小さなフィールドへの読み書きが非常に頻繁である一方、大きなフィールドへのアクセス頻度が低い場合、大きなフィールドを圧縮列として設定できます。

使用説明

サポートされているデータ型

1. BLOB(TINYBLOB、MEDIUMBLOB、LONGBLOBを含む)。
2. TEXT(TINYTEXT、MEDIUMTEXT、LONGTEXTを含む)。
3. VARCHAR。
4. VARBINARY。
5. JSON。
構文は以下の通りです。
CREATE TABLE t1(
id INT PRIMARY KEY,
b BLOB COMPRESSED
);
または
CREATE TABLE t1(
id INT PRIMARY KEY,
b BLOB COLUMN_FORMAT COMPRESSED
);
圧縮しきい値(Threshold)
圧縮しきい値はパラメータ innodb_min_column_compress_length で制御され、デフォルト値は256です。列の元のサイズがこのパラメータの値を超える場合に圧縮を実行し、そうでない場合は圧縮ヘッダを追加するだけで、データを実際に圧縮することはありません。
サポートされる DDL 構文のまとめは以下の通りです:
create table について:
DDL
圧縮属性を引き継ぐかどうか
CREATE TABLE t2 LIKE t1;
Y
CREATE TABLE t2 SELECT * FROM t1;
N
CREATE TABLE t2(a BLOB) SELECT * FROM t1;
N
alter table について:
DDL
説明
ALTER TABLE t1 MODIFY COLUMN a BLOB;
圧縮列を非圧縮列に変更します。
ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
非圧縮列を圧縮列に変更します。

パラメータ説明

パラメータ名
動的
タイプ
デフォルト
パラメータ値の範囲
説明
innodb_zlib_column_compression_level
Yes
UINT
6
[0-9]
zlib圧縮では、0は圧縮しないことを示し、1は最速の圧縮を示し、9は最大圧縮率の圧縮を示します。1から9になるにつれて圧縮速度が遅くなりますが、圧縮率は高くなります。
innodb_zstd_column_compression_level
Yes
UINT
3
[1-22]
zstd圧縮では、1は最速の圧縮を示し、22は最大圧縮率の圧縮を示します。1から22になるにつれて圧縮速度が遅くなりますが、圧縮率は高くなります。
innodb_min_column_compress_length
Yes
UINT
256
[1、UINT_MAX32]
圧縮しきい値を制御します。単位:バイト。列の元の長さがこのパラメータの値以上の場合、圧縮を実行します。そうでない場合は、圧縮ヘッダーのみを追加して、データ自体は圧縮しません。

マルチアルゴリズムサポート(Multiple Algorithms)

ZLIB、LZ4、ZSTDの3つの圧縮アルゴリズムを対応しています。アルゴリズムを省略することも可能で、省略した場合のデフォルトアルゴリズムはZLIBとなります。
構文は以下の通りです:
CREATE TABLE t1(
id INT PRIMARY KEY,
b BLOB COMPRESSED ALGORITHM = [ZLIB|LZ4|ZSTD]
);
または
CREATE TABLE t1(
id INT PRIMARY KEY,
b BLOB COLUMN_FORMAT COMPRESSED ALGORITHM = [ZLIB|LZ4|ZSTD]
);

圧縮アルゴリズムと圧縮レベルの選択(Compression Algorithms and Compression Levels)

1. ZLIB:現在、ZLIBの複数圧縮レベルを提供しており、パラメータはinnodb_zlib_column_compression_levelで、値は0‐9です。0は圧縮しないことを示し、1は最速の圧縮を示し、9は最大圧縮率の圧縮を示します。デフォルトは6です。
2. LZ4:MySQLのページ圧縮と整合性を保つため、LZ4の多段階圧縮はサポートされていません。LZ4圧縮アルゴリズムを使用する際には注意が必要です。LZ4圧縮の最大元データ長は231-1ですが、LONGBLOBの最大長は232-1です。圧縮対象の元データ長が231以上の場合、暗黙的にZLIBが使用されます。
3. ZSTD:ZSTD(ZStandard)には3つの圧縮方式があります。ここでの列圧縮は、辞書を含まない非ストリーミングの通常圧縮をサポートしており、複数圧縮レベルを提供します。パラメータはinnodb_zstd_column_compression_levelで、値は1‐22です。1は最速の圧縮を示し、22は最大圧縮率の圧縮を示します。デフォルトは3です。
圧縮属性表示
ここではデフォルトの圧縮アルゴリズムを表示します:ALGORITHM = ZLIB。
CREATE TABLE t2 (a VARCHAR(100) COMPRESSED) ENGINE=InnoDB;

SHOW CREATE TABLE t2;

注意事項

論理エクスポートに関しては、論理エクスポート時にcreate tableには引き続きCompressed関連のキーワードが付属します。したがって、インポート時にはTDSQL-C for MySQL内部でサポートされています。その他のMySQL派生版および公式バージョン:
公式バージョン番号が8.0.22未満の場合、直接インポートできます。
公式バージョン番号が8.0.22以上の場合、論理エクスポート後に圧縮キーワードを削除する必要があります。
DTSで他のクラウドまたはユーザーにエクスポートする場合、binlog同期プロセス中に互換性の問題が発生する可能性があります。この場合、圧縮キーワードを含むDDL文をスキップすることができます。
物理バックアップに関しては、バックアップ時にそのフィールドがinnodb内部で圧縮済み状態であるため、このバックアップを使用するバージョンも列圧縮機能を備えたバージョンである必要があります。

ヘルプとサポート

この記事はお役に立ちましたか?

フィードバック