【问题标题】:Will Mysql Partitioning auto-add a new partition?Mysql Partitioning 会自动添加新分区吗?
【发布时间】:2014-01-06 19:37:09
【问题描述】:

我正在设置分区以按季度分隔非常大的数据集。有没有办法让 Mysql 每季度自动创建一个新分区,还是我必须预先分配它们?

这方面的最佳做法是什么?也许只是为接下来的几年制作所有分区而忘记它?还是运行季度计划?

感谢您的任何建议。

【问题讨论】:

  • mysql 根据表达式创建分区。这意味着如果分区计算的结果返回一个以前未用于分区的值,它将自动创建新分区。例如PARTITION BY YEAR(datefield) 每年都会创建一个新分区。
  • @MarcB:你在想HASH Partitioning,例如PARTITION BY HASH(YEAR(datefield))?
  • MarcB 是的。由于分区键也必须在每个唯一键中,我需要将 row_id (auto inc) 与 YEAR(timestamp) 结合起来。但是我的数据每年都在翻倍,所以每年可能不是最好的答案。我真的很想对每 50,000,000 条左右的记录进行分区。我现在有超过 6 亿条记录。我的问题是 row_id 不在每个唯一键中,如果是的话,会弄乱我的查询。

标签: mysql database-partitioning


【解决方案1】:

MySQL 中有多种分区方法,但它们都简化为将数据分布在 预定 个分区 (see syntax here) 上。

但是,随着时间的推移,您可以设置一个 cron 作业或使用 event scheduler 添加新分区。

This answer 提供了一个不错的程序,可以定期触发以实现此效果。修改过程以便按年(而不是按天)分区似乎很简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-28
    • 2013-08-07
    • 2018-10-14
    • 2010-12-02
    • 1970-01-01
    • 2015-11-01
    • 2020-05-16
    • 2021-04-21
    相关资源
    最近更新 更多