我有一个电子商务应用程序运行在MySQL服务器上,从过去10年开始。特别有两张表格:
(Approx 4,500万行和3.5 GB数据)
这些表格载有过去10年内购买的所有订单及其各自的产品。通常,最后6个月的数据是访问频率最高的,所有以前的数据要么用于业务/营销团队的多份报告,要么用于客户检查他的订单历史记录。
由于这个表的大小不断增加,我们在读和写方面都遇到了更多的查询时间。因此,我想从这些表中归档一些数据以提高性能。主要关注的是,存档的数据仍然可以供报表和客户读取。
什么才是正确的归档策略呢?
发布于 2022-02-20 17:22:11
PARTITIONing不太可能提供任何性能上的好处。
请提供SHOW CREATE TABLE和一些“慢”查询,以便我可以分析访问模式、聚集索引选择、分区潜力等等。
有时候,对PK的更改(即“使用数据的集群”)可以极大地提高“引用的局部性”,从而提供性能好处。回到过去的用户也可能会耗尽缓存(“缓冲池”)。从user_id开始更改PK可能会显着地改善这个问题。
另一种可能是使用复制将“只读”查询从“活动”记录(最近几个月的读/写)中分离出来。这可以通过减少I/O,让客户在主服务器上访问,同时将“报告”降级到副本中,从而使其受益。
内存多少?当数据变得“大”时,运行“报告”可能会导致缓存崩溃,使一切变得更慢。摘要表是很好的解决方法。
分区表的最优索引必然与等效的非分区表的不同。
https://stackoverflow.com/questions/71192045
复制相似问题