【问题标题】:Add partition in MySQL Table to an Already Partitioned Table将 MySQL 表中的分区添加到已经分区的表中
【发布时间】:2018-12-06 00:04:45
【问题描述】:

我有如下表格:

CREATE TABLE TEST_P (
    ID VARCHAR(64),
    F_NAME int NOT NULL,
    L_NAME VARCHAR(64),
    CREATETS DATETIME NOT NULL,
    PRIMARY KEY(DATA_TRACE_ID,CREATETS)
)
PARTITION BY RANGE(DAY(CREATETS))(
        PARTITION day1 VALUES LESS THAN (2),
        PARTITION day2 VALUES LESS THAN (3),
        PARTITION day3 VALUES LESS THAN (4),
        PARTITION day4 VALUES LESS THAN (5),
        PARTITION day5 VALUES LESS THAN (6),
        PARTITION day6 VALUES LESS THAN (7),
        PARTITION day7 VALUES LESS THAN (8),
        PARTITION day8 VALUES LESS THAN (9),
        PARTITION day9 VALUES LESS THAN (10),
        PARTITION day10 VALUES LESS THAN (11),
        PARTITION day11 VALUES LESS THAN (12),
        PARTITION day12 VALUES LESS THAN (13),
        PARTITION day13 VALUES LESS THAN (14),
        PARTITION day14 VALUES LESS THAN (15),
        PARTITION day15 VALUES LESS THAN (16),
        PARTITION day16 VALUES LESS THAN (17),
        PARTITION day17 VALUES LESS THAN (18),
        PARTITION day18 VALUES LESS THAN (19),
        PARTITION day19 VALUES LESS THAN (20),
        PARTITION day20 VALUES LESS THAN (21),
        PARTITION day21 VALUES LESS THAN (22),
        PARTITION day22 VALUES LESS THAN (23),
        PARTITION day23 VALUES LESS THAN (24),
        PARTITION day24 VALUES LESS THAN (25),
        PARTITION day25 VALUES LESS THAN (26),
        PARTITION day26 VALUES LESS THAN (27),
        PARTITION day27 VALUES LESS THAN (28),
        PARTITION day28 VALUES LESS THAN (29),
        PARTITION day29 VALUES LESS THAN (30),
        PARTITION day30 VALUES LESS THAN (31),
        PARTITION day31 VALUES LESS THAN MAXVALUE
);

我想编写一个脚本来删除今天+1 天的分区并创建一个具有相同分区条件的新分区。 例如:

我想删除分区 day5,因为我想删除该表中的数据。

我正在这样做:

ALTER TABLE TEST_P REORGANIZE PARTITION day5 into 
(PARTITION day5 VALUES LESS THAN (5),
    PARTITION day6 VALUES LESS THAN (6),
    PARTITION day7 VALUES LESS THAN (7),
    PARTITION day8 VALUES LESS THAN (8),
    PARTITION day9 VALUES LESS THAN (9),
    PARTITION day10 VALUES LESS THAN (10),
    PARTITION day11 VALUES LESS THAN (11),
    PARTITION day12 VALUES LESS THAN (12),
    PARTITION day13 VALUES LESS THAN (13),
    PARTITION day14 VALUES LESS THAN (14),
    PARTITION day15 VALUES LESS THAN (15),
    PARTITION day16 VALUES LESS THAN (16),
    PARTITION day17 VALUES LESS THAN (17),
    PARTITION day18 VALUES LESS THAN (18),
    PARTITION day19 VALUES LESS THAN (19),
    PARTITION day20 VALUES LESS THAN (20),
    PARTITION day21 VALUES LESS THAN (21),
    PARTITION day22 VALUES LESS THAN (22),
    PARTITION day23 VALUES LESS THAN (23),
    PARTITION day24 VALUES LESS THAN (24),
    PARTITION day25 VALUES LESS THAN (25),
    PARTITION day26 VALUES LESS THAN (26),
    PARTITION day27 VALUES LESS THAN (27),
    PARTITION day28 VALUES LESS THAN (28),
    PARTITION day29 VALUES LESS THAN (29),
    PARTITION day30 VALUES LESS THAN (30),
    PARTITION day31 VALUES LESS THAN (31),
    PARTITION p_default VALUES LESS THAN MAXVALUE)

但我明白了

要重组的分区列表出错

这张表增长的非常快非常快,所以我想删除其中一个月的数据,不影响表的性能。

【问题讨论】:

  • 这是否与exchange partition 相同,使用空表然后删除提取的表?
  • REORGANIZE PARTITION 用于将一个分区拆分为新的分区,它们不能与其他分区重叠。
  • REORGANIZE 可以合并或拆分。问题在于第 6 天等。

标签: mysql partitioning


【解决方案1】:

滑动时间序列是PARTITIONing 的少数用例之一。不幸的是,您的方法效率低下(如果它甚至可以修复的话)。

取而代之的是,有实际的日子(不是一个月中的哪一天)并每晚添加一个新分区 - REORGANIZEing 将“未来”分区添加到明天和一个新的“未来”。另外,DROP PARTITION 折腾最老的。详情here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-02
    • 1970-01-01
    • 1970-01-01
    • 2022-07-28
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2019-04-16
    相关资源
    最近更新 更多