如何按天对MySQL表进行分区?

egi*_*dra 2 mysql database

我正在运行 MySQL 5.1 并将网络日志中的数据存储到表中。有一个日期时间列,我想按天分区。每天晚上我都会将前一天的新数据添加到表中,这就是我想按天分区的原因。它通常是几百万行。我想按天分区,因为完成一个 MySQL 查询通常需要 20 秒。

简而言之,我想按天进行分区,因为用户可以单击日历来获取由一天的数据组成的网络日志信息。数据跨越数百万行(一天)。

我在很多分区文章中看到的问题是您必须明确指定要分区的值?我不喜欢这种方式,因为这意味着我必须每晚更改表才能添加额外的分区。是否有内置的 MySQL 功能可以自动为我执行此操作,还是我必须编写一个 bash 脚本/cron 作业来每晚为我更改表?

例如,如果我遵循以下示例:http : //datacharmer.blogspot.com/2008/12/partition-helper-improving-usability.html

一年后,我将拥有 365 个分区。

Ric*_*mes 8

索引对于任何表都是必须的。索引的详细信息来自SELECTs您拥有的;让我们看看他们。

经验法则:

  • 不要对少于一百万行的表进行分区
  • 不要使用超过 50 个分区。
  • 如果您在几天/几周/几个月后“清除旧数据”,请参阅我的博客以获取有关如何执行此操作的代码。
  • PARTITION BY RANGE() 是唯一有用的分区机制。