我有一个大约有190万行的表,并且一直在增长。我对这些数据运行了一些相当复杂的查询。活动数据通常聚集在表的末尾——也就是说,只有最近的n%的记录倾向于定期访问,尽管对于人们回顾旧记录的不太常见的情况,其他数据需要在同一个表中可用。
对于那些在MySQL中有分区经验的人来说,这个表似乎是一个很好的分区候选者吗?还是它太小而无法获得太多收益?
谢谢,
Jared
我在stackoverflow上找了一个问题来回答这个问题,但没有找到任何合适的答案。
看看这篇文章。。。他在一张只有3列和80万条记录的表格上显示了显著的进步。只要在生成整数或NULL的列上进行分区,就会看到一些非常好的性能改进。我喜欢从基于日期的分区中获得的速度提升,我看到的记录明显更少,但列更多。
分区提高数据库性能
从逻辑上讲,是的,如果您通常运行的查询只需要表的最近2%,那么这将是一个很好的分区候选者。
使用MySQL分区的最大障碍是,用于分区键的列必须是主键和任何其他唯一键的一部分。这实际上使一些表无法进行分区。
如果这阻止了对表进行分区,那么后备计划是"手动"分区。也就是说,制作两个具有相同结构的真实表。每周(或您想要的任何计划),运行一个批处理作业,将较旧的数据迁移到第二个表。您总是可以创建一个VIEW,它是两个表的UNION,以备偶尔需要运行表扫描时使用。
表大小应大于5 GB。你应该选择RANGE PARTITING。。。(每月或每年)