MySQL数据库的条目每月增加100万,如何对数据库进行分区以检查查询时间

时间:2012-08-12 21:11:59

标签: php mysql query-optimization database-partitioning large-data

  • 我是一名大学本科生,致力于在全国范围内运营的基于PHP和MySQL的库存管理系统。它的数据库大小预计每月增加约100万加上条目,目前规模约为200万。
  • 我需要防止查询时间呈指数级增长,目前大多数模块的查询时间都在7-11秒之间。

  • 事实是,与任何旧数据相比,访问上个月输入数据的概率要高得多。所以我认为基于数据输入时间的数据分区应该能够控制查询时间。那么我怎样才能做到这一点。

  • 具体来说,我想要一种方法来缓存上个月的数据,以便每个查询在具有最新数据的表中搜索产品,并且如果在最后一个数据中找不到,则应搜索其余数据。 1个月的数据。

1 个答案:

答案 0 :(得分:0)

如果您想使用MySQL的分区功能,请查看this article

话虽如此,使用分区时有一些限制:

  • 您不能拥有不在分区键中的索引
  • 您失去了一些数据库可移植性,因为分区与其他数据库的工作方式完全不同。

您还可以通过定期将旧记录移动到存档表来手动处理分区。当然,您还必须实现不同的代码来读取这些存档的记录。

另请注意,您的查询时间似乎很长。我使用的表格远远超过200万条记录,访问时间要长得多。