【发布时间】:2020-07-08 06:31:38
【问题描述】:
我最近继承了一个遗留应用程序,包括一个 MySQL 数据库,它的核心是一个“表”,我们将其称为 Foo - 只是它不是一个实际的表,而是许多相同的表,名为 Foo01, Foo02... 到 Foo31。当记录的日期为NN 时,记录被插入到FooNN,此“分区逻辑”在应用程序层进行管理。
作为一个整体,Foo 以每天约 10 万行的稳定速度增长。总计数(~3M)和行数据表明每条记录在大约一个月后被删除/历史记录,所以大小不是一个大问题。随着时间的推移,插入以大致恒定的速率发生,不存在更新。 Foo 上的查询仅因用户(不是很多)进行手动搜索而发生,这些搜索可能会或可能不会被“分区”日期过滤,并且可能有也可能没有其他搜索参数。
对我来说,这看起来很像过去有人做了一个过早的优化,可能再加上一勺大胆的无知。但我不是任何专家,我只是想了解为什么有人会这样不顾一切。
这种方法有任何意义吗?即它是否比 MySQL 的内置分区有任何优势(使明显的缺点值得)?
【问题讨论】:
-
我想知道这个数据库是在分区存在之前构建的吗?
-
不要这么认为@P.Salmon,MySQL 已经进行了至少十年的分区,我称该应用程序为“遗留”,但它并没有那么旧。
标签: mysql sql database database-design partitioning