代码之家  ›  专栏  ›  技术社区  ›  Kartik

是否应存档未使用的表?

  •  0
  • Kartik  · 技术社区  · 7 年前

    我们的数据库中有一个表大约需要25GB。它不再被当前代码使用。

    如果我们存档这个表,即使它没有被查询/使用,它会对性能(对于其余的表)有任何改进吗?请提供解释。

    我们正在使用MySQL和AWS Aurora。

    3 回复  |  直到 7 年前
        1
  •  0
  •   The-Big-K    7 年前

    存档表对Aurora没有任何影响。未使用的页面最终会从缓冲池中被逐出[1],从那时起,它们就永远不会被拉回到数据库实例中,除非您进行一个会接触到这些页面的查询。

    您将继续支付存储成本(以及其他直接成本,如快照),使其保持未使用状态。更好的选择是将未使用的数据移动到新集群,从中创建快照,然后删除集群。在需要时,您可以通过还原快照来恢复数据。然后可以通过删除这些未使用的表来清除原始数据库。这样,您最终只需支付快照的费用,而快照的成本更低。

    您还可以从MySQL中导出数据(比如csv),并将其存储在S3/Glacier中。唯一的Caviat是,当您需要访问数据时,将数据加载回现有或新的数据库集群可能会花费更多的时间。

    [1]缓冲池使用LRU进行逐出。当工作负载运行很长时间后,最终会将与未使用的表关联的所有页面逐出。链接: https://dev.mysql.com/doc/refman/5.5/en/innodb-buffer-pool.html

        2
  •  0
  •   Ahmed Mustafa    7 年前

    是的,归档还将提高性能,同时降低备份/恢复周期的侧面和快速性。 在我最近的全职工作中,我尝试过不同的项目,结果令人惊讶。对于那些否认的人,我只会说:

    • 减少占用空间减少磁盘IO和扫描
    • 脚印的减少降低了缓冲区的要求,因此也降低了RAM的要求。
        3
  •  -2
  •   Bane    7 年前

    ,存档不经常使用的数据将减轻更快、更频繁访问的数据存储系统的负担。不太可能需要的较旧数据通常被放置在不需要具有包含仍在使用的数据的系统的速度和可访问性的系统上。

    存档数据存储在成本较低的存储层上,这是减少主存储消耗和相关成本的一种方法。通常,数据重复是在移动到较低存储层的数据上执行的,这样可以减少总体存储占用并降低辅助存储成本。