重要
このページは英語版のページを機械翻訳しています。原文はこちらからご覧ください。

ALTER TABLE ... COMPACT

警告

このステートメントはまだ実験的機能です。実稼働環境で使用することはお勧めしません。

読み取りパフォーマンスを向上させ、ディスク使用量を削減するために、TiDBはバックグラウンドのストレージノードでデータ圧縮を自動的にスケジュールします。圧縮中に、ストレージノードは物理データを書き換えます。これには、削除された行のクリーンアップや、更新によって発生したデータの複数のバージョンのマージが含まれます。 ALTER TABLE ... COMPACTステートメントを使用すると、バックグラウンドで圧縮がトリガーされるまで待たずに、特定のテーブルの圧縮をすぐに開始できます。

このステートメントの実行は、既存のSQLステートメントをブロックしたり、トランザクション、DDL、GCなどのTiDB機能に影響を与えたりすることはありません。 SQLステートメントで選択できるデータも変更されません。ただし、このステートメントを実行すると、IOおよびCPUリソースが消費されるため、SQL実行の待ち時間が長くなる可能性があります。

テーブルのすべてのレプリカが圧縮されると、圧縮ステートメントが終了して返されます。実行プロセス中に、 KILLステートメントを実行することにより、圧縮を安全に中断できます。圧縮を中断しても、データの一貫性が損なわれたり、データが失われたりすることはなく、その後の手動またはバックグラウンドでの圧縮にも影響しません。

このデータ圧縮ステートメントは現在、TiFlashレプリカでのみサポートされており、TiKVレプリカではサポートされていません。

あらすじ

AlterTableCompactStmt
ALTERTABLETableNameCOMPACTTIFLASHREPLICA

テーブル内のコンパクトなTiFlashレプリカ

以下に例としてemployeesのテーブルを取り上げます。このテーブルには、2つのTiFlashレプリカを持つ4つのパーティションがあります。

CREATE TABLE employees (
    id INT NOT NULL,
    hired DATE NOT NULL DEFAULT '1970-01-01',
    store_id INT
)
PARTITION BY LIST (store_id) (
    PARTITION pNorth VALUES IN (1, 2, 3, 4, 5),
    PARTITION pEast VALUES IN (6, 7, 8, 9, 10),
    PARTITION pWest VALUES IN (11, 12, 13, 14, 15),
    PARTITION pCentral VALUES IN (16, 17, 18, 19, 20)
);
ALTER TABLE employees SET TIFLASH REPLICA 2;

次のステートメントを実行して、 employeesのテーブル内のすべてのパーティションの2つのTiFlashレプリカの圧縮をすぐに開始できます。

ALTER TABLE employees COMPACT TIFLASH REPLICA;

並行性

ALTER TABLE ... COMPACTステートメントは、テーブル内のすべてのレプリカを同時に圧縮します。

オンラインビジネスへの重大な影響を回避するために、各TiFlashインスタンスは、デフォルトで一度に1つのテーブルのデータのみを圧縮します(バックグラウンドでトリガーされる圧縮を除く)。つまり、 ALTER TABLE ... COMPACTのステートメントを複数のテーブルで同時に実行すると、それらの実行は同時に実行されるのではなく、同じTiFlashインスタンスでキューに入れられます。

より高いリソース使用量でより大きなテーブルレベルの同時実行性を取得するには、TiFlash構成を変更しますmanual_compact_pool_size 。たとえば、 manual_compact_pool_sizeが2に設定されている場合、2つのテーブルの圧縮を同時に処理できます。

MySQLの互換性

ALTER TABLE ... COMPACT構文はTiDB固有であり、標準SQL構文の拡張です。同等のMySQL構文はありませんが、MySQLクライアントまたはMySQLプロトコルに準拠するさまざまなデータベースドライバーを使用して、このステートメントを実行できます。

BinlogとTiCDCの互換性

ALTER TABLE ... COMPACTステートメントは論理データの変更をもたらさないため、 BinlogまたはTiCDCによってダウンストリームに複製されません。

も参照してください