MySQL 归档数据的最佳实践

问题描述

我有一个 120Go 数据库,其中有 1 个特定的非常重的 80Go 表(存储 10 年以来的数据)。

我想在存档中移动旧数据,但不知道是否最好:

  • 将它们移动到同一数据库的新表中
  • 将它们移动到新存档数据库的新表中

性能的角度来看会有什么结果?

1/ 如果我将表减少到只有 8Go 并将 72Go 移动到来自同一数据库的另一个表中,数据库是否会运行得更快(我们不会通过读/写操作访问存档表,而 r/W 将在较轻的桌子上完成)。

2/ 将 72Go 的数据保留到存档表中会降低数据库引擎的速度吗?

3/ 将 72Go 的数据放入另一个存档数据库与将 72Go 保存在主数据库的存档表中相比有什么好处?

感谢您的回答, 爱德华

解决方法

表的大小可能会也可能不会影响对该表的查询性能。这取决于查询、innodb_buffer_pool_size 和 RAM 大小。让我们看看一些典型的查询。

未使用的大表的存在不会影响对其他表的查询。

PARTITION BY RANGE TO_DAYS(...) 并具有每月或每年的分区可能是明智的,也可能不是明智的。主要优势是您可以清除旧数据,但您似乎不需要这样做。

如果您确实拆分为 72 + 8,我建议将 80 中的 8 复制到一个新表中,然后使用 RENAME TABLEs 来处理表名。

一个 TABLEs 中的两个 DATABASE 本质上与将 TABLEs 放在不同的 DATABASEs 中是一样的。

当您提供更多详细信息时,我会更新此答案。