tencent cloud

文档反馈

exchange subpartition template

最后更新时间:2024-10-09 10:26:35

    功能介绍

    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));
    
    -- 语法演示
    -- 第一步: hash_range_1--> temp
    ALTER TABLE hash_range_1
    EXCHANGE subpartition template s20240111
    with table temp with validation;
    -- 第二步: 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 表中对应一级分区中,二级分区的定义。在上面的例子中,如果在第一步中 temp 表 p1 分区有 hired 列存在数据满足 tdsql_day(hired)>=20240111,那么将不满足二级分区定义:SUBPARTITION s20240111 VALUES LESS THAN (20240111) 数据校验将会失败。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持