gpt4 book ai didi

Mysql REORGANIZE 算法

转载 作者:行者123 更新时间:2023-11-29 15:40:01 24 4
gpt4 key购买 nike

我有一个关于 Mysql/MariaDB 分区合并的问题。

我的 table 看起来像这样:

PARTITION BY RANGE (TO_DAYS(`mydate`))
(
PARTITION p_first VALUES LESS THAN (TO_DAYS('2019-03-01')) ENGINE=InnoDB,
PARTITION p201903 VALUES LESS THAN (TO_DAYS('2019-04-01')) ENGINE=InnoDB,
PARTITION p201904 VALUES LESS THAN (TO_DAYS('2019-05-01')) ENGINE=InnoDB,
PARTITION p201905 VALUES LESS THAN (TO_DAYS('2019-06-01')) ENGINE=InnoDB,
PARTITION p201906 VALUES LESS THAN (TO_DAYS('2019-07-01')) ENGINE=InnoDB,
PARTITION p201907 VALUES LESS THAN (TO_DAYS('2019-08-01')) ENGINE=InnoDB,
PARTITION p201908 VALUES LESS THAN (TO_DAYS('2019-09-01')) ENGINE=InnoDB,
PARTITION p_future VALUES LESS THAN (MAXVALUE) ENGINE=InnoDB
);

pfirst 分区确实很大(500M 行),并且分区对于获取最近几个月的数据很有用。

我们每月将最旧的分区 p201903pfirst 合并,并拆分 p_future 以创建新分区 (p201909)使用这些查询:

ALTER TABLE mytable REORGANIZE PARTITION p_first, p201903  INTO ( PARTITION p_first VALUES LESS THAN (TO_DAYS('2019-04-01'));

ALTER TABLE EB_position REORGANIZE PARTITION p_future INTO ( PARTITION p201909 VALUES LESS THAN (TO_DAYS('2019-10-01')) ENGINE=InnoDB, PARTITION p_future VALUES LESS THAN (MAXVALUE) ENGINE=InnoDB );

mysql 在技术上是如何做到这一点的?mysql 是否创建新的临时部分并将部分合并到其中?mysql 是否用其他部分填充了一部分?那么,反转零件定义是否更好?喜欢:

ALTER TABLE mytable REORGANIZE PARTITION p201903, p_first INTO ( PARTITION p_first VALUES LESS THAN (TO_DAYS('2019-04-01'));

感谢您的回答

最佳答案

REORGANIZE 将所有数据从源分区复制到目标分区。由于涉及到p_first,而且分区很大,所以需要很长时间,并且会锁表。

从另一个角度来看...MySQL“谨慎行事”。但是通过必要数据的完整副本创建新分区,如果发生崩溃,旧分区完好无损。相反,如果它尝试“合并”分区,则崩溃可能会导致表损坏。安全(和简单)比速度更受青睐。

不要不断地添加到那个巨大的分区,而是添加到第二个分区。或者,将其视为构建年度分区。更具体地说,保留 p_first 并将 p201904 添加到 p201903。下个月,将 p201905 添加到 p201903。在年底,切换到“更好”的命名约定 p2020 来收集 2020 年的 12 个月。等等

十年后,您将拥有大约 18 个分区;这并不是“坏”,而且由于 18 个分区而不是 8 个分区,您会发现正常操作中的差异很小。

... useful to get data from last months.

仅当您扫描整个月的分区时。让我看看受益于每月分区的查询。几乎在所有情况下,分区都不会带来性能优势。可能需要更改索引才能使非分区表的工作速度与分区表一样快,甚至更快。

关于Mysql REORGANIZE 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57773841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com