问题描述
我有一个 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
中是一样的。
当您提供更多详细信息时,我会更新此答案。