tencent cloud

TDSQL-C for MySQL

exchange subpartition template

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

機能説明

exchange subpartition template機能は、ユーザーがあるパーティションのサブパーティションテンプレートを別のパーティションに交換し、同時に元のパーティションに別のパーティションのサブパーティションテンプレートを交換することを可能にします。これにより、テーブルの再作成やデータ移行することなく、パーティションテーブルの分割戦略を迅速に変更できます。

サポートバージョン

カーネルバージョン TXSQL 8.0 3.1.15 以降です。

適用シーン

テーブル内のデータを迅速に交換する必要があるシナリオに適用されます。

使用説明

構文の使用

ALTER TABLE pt EXCHANGE SUBPARTITION TEMPLATE p WITH TABLE nt WITH VALIDATION / WITHOUT VALIDATION

-- s20240111のデータをhash_range_1からhash_range_2に移動します

CREATE TABLE hash_range_1(
id INT NOT NULL,
fname VARCHAR(30),
hired date NOT NULL DEFAULT '9999-12-31',
primary key (id, hired))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY LIST(murmurHashCodeAndMod(id,2))
SUBPARTITION BY RANGE(tdsql_day(hired))
SUBPARTITION TEMPLATE
(SUBPARTITION s20240111 VALUES LESS THAN (20240111),
SUBPARTITION s20240112 VALUES LESS THAN (20240112),
SUBPARTITION s20240113 VALUES LESS THAN (20240113))
(PARTITION p1 VALUES IN (0),
PARTITION p2 VALUES IN (1));

-- (hash_range_2とhash_range_1は完全に同じです)
CREATE TABLE hash_range_2(
id INT NOT NULL,
fname VARCHAR(30),
hired date NOT NULL DEFAULT '9999-12-31',
primary key (id, hired))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY LIST(murmurHashCodeAndMod(id,2))
SUBPARTITION BY RANGE(tdsql_day(hired))
SUBPARTITION TEMPLATE
(SUBPARTITION s20230111 VALUES LESS THAN (20240111),
SUBPARTITION s20230112 VALUES LESS THAN (20240112),
SUBPARTITION s20230113 VALUES LESS THAN (20240113))
(PARTITION p1 VALUES IN (0),
PARTITION p2 VALUES IN (1));

-- 一時的なtempテーブルを新規作成します。一次パーティションとテーブル構造はhash_range_1と同じです。
CREATE TABLE temp(
id INT NOT NULL,
fname VARCHAR(30),
hired date NOT NULL DEFAULT '9999-12-31',
primary key (id, hired))
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
PARTITION BY LIST(murmurHashCodeAndMod(id,2))
(PARTITION p1 VALUES IN (0),
PARTITION p2 VALUES IN (1));

――シンタックスデモ
――ステップ1:hash_range_1からtempに移動します
ALTER TABLE hash_range_1
EXCHANGE subpartition template s20240111
with table temp with validation;
-- ステップ2:tempからhash_range_2に移動します
ALTER TABLE hash_range_2
EXCHANGE subpartition template s20240111
with table temp with validation;

利用制限

ptテーブルとntテーブルはグローバルインデックスを持つことはできません。
ptテーブルとntテーブルはトリガーおよびcheck制約を持つことはできません。
ptテーブルとntテーブルのパーティションタイプおよびサブパーティションタイプは、rangeとlistのみをサポートしています。
ptテーブルとntテーブルの一次パーティション定義は一致している必要があります。

データ検証の説明

公式ドキュメントと同様に、明示的に WITH VALIDATION を指定してデータ検証を行うか、WITHOUT VALIDATION を指定してデータ検証を行いません。デフォルトではデータ検証が行われます。
データ検証は、主にntテーブルの一次パーティションデータが、ptテーブルの対応する一次パーティション内のセカンダリパーティション定義を満たしているかどうかを検証します。上記の例では、ステップ1においてtempテーブルのp1パーティションに、tdsql_day(hired)>=20240111を満たすデータがhired列に存在する場合、セカンダリパーティション定義「SUBPARTITION s20240111 VALUES LESS THAN (20240111)」を満たさず、データ検証は失敗します。

ヘルプとサポート

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

フィードバック