我有数据库表,每天插入大约10k行。数据库已经有10m +记录。我想知道如何在这个表上每个月自动创建分区,以便我可以更快地获取数据。
对表上创建的分区没有任何限制。
例如
分区应该在每个月的月初自动创建。
我的方案中有日期栏。
答案 0 :(得分:2)
不,您必须定期运行ALTER TABLE
以添加分区。 MySQL没有自动添加分区以响应数据增长的功能。但你当然可以创建一个cron工作来完成它。或者您可以使用MySQL EVENT。
MySQL 5.5允许每个表最多1024个分区,MySQL 5.6将每个表最多增加到8192个分区。因此,如果您每年创建12个分区,则可以存储至少85年的时间。值得的数据。
但是,请注意,分区不是一个使所有查询更快的神奇解决方案。只有优化程序可以根据您的查询条件修剪检查的分区时,分区才有用。例如,如果按日期分区,但随后对特定用户的所有行运行查询而不考虑日期,则查询必须检查所有分区,因为给定用户的行可能在任何月份都存在。
以每天10k行的增长率,您的餐桌每年将增加3,650,000。这当然是非常快速的增长,但并非不可能处理。
我在一些拥有数亿行的数据库上工作,没有使用分区。分区是优化某些查询的一种方法,但索引更灵活。