Mysql 5.5自动创建每月分区

时间:2014-05-13 19:33:05

标签: mysql partitioning

我有数据库表,每天插入大约10k行。数据库已经有10m +记录。我想知道如何在这个表上每个月自动创建分区,以便我可以更快地获取数据。

对表上创建的分区没有任何限制。

例如

  • 2000年的12个分区
  • 2001年的12个分区,依此类推......

分区应该在每个月的月初自动创建。

我的方案中有日期栏。

1 个答案:

答案 0 :(得分:2)

不,您必须定期运行ALTER TABLE以添加分区。 MySQL没有自动添加分区以响应数据增长的功能。但你当然可以创建一个cron工作来完成它。或者您可以使用MySQL EVENT

MySQL 5.5允许每个表最多1024个分区,MySQL 5.6将每个表最多增加到8192个分区。因此,如果您每年创建12个分区,则可以存储至少85年的时间。值得的数据。

但是,请注意,分区不是一个使所有查询更快的神奇解决方案。只有优化程序可以根据您的查询条件修剪检查的分区时,分区才有用。例如,如果按日期分区,但随后对特定用户的所有行运行查询而不考虑日期,则查询必须检查所有分区,因为给定用户的行可能在任何月份都存在。

以每天10k行的增长率,您的餐桌每年将增加3,650,000。这当然是非常快速的增长,但并非不可能处理。

我在一些拥有数亿行的数据库上工作,没有使用分区。分区是优化某些查询的一种方法,但索引更灵活。