首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将旧数据存档在Postgresql中

将旧数据存档在Postgresql中
EN

Stack Overflow用户
提问于 2019-07-11 09:22:31
回答 2查看 7.4K关注 0票数 12

目前,我希望有人能就我将要推进的DB归档过程向我提供建议。

我有一个数据库(DB-1),它有两个非常大的表,一个有25 GB的数据,另一个是20 GB的数据。这会导致主要的性能问题,甚至我也有索引。

因此,我们考虑用下面的过程对旧数据进行归档,

  1. 从现有数据库(DB-1)克隆一个新数据库(DB-2) .
  2. 从DB-1中删除旧数据,这样它就只有过去两年的记录了。如果我需要,旧的数据可以连接DB-2。
  3. 每个月都应该将旧数据从DB-1移动到DB-2,并从DB-1中删除已移动的行。
EN

回答 2

Stack Overflow用户

发布于 2019-07-11 10:14:56

这是错误的做法。

你要找的是分区

您可以创建覆盖一年的范围分区。要删除旧数据,只需删除不再需要的年份的分区。

如果出于某些原因需要保留数据,也可以将分区从表中分离出来。然后数据仍然“躺在”周围,但不会出现在(分区的)表中。您可以直接查询(分离的)分区来访问该数据。您甚至可以将这个(分离的)分区移动到一个较慢的硬盘上,以便在有多个磁盘的情况下释放快速磁盘上的空间。

但是您甚至可以看到,仅仅分区可能已经提高了性能,但这在很大程度上取决于您的查询。

请注意,您应该为此使用Postgres 11,因为分区在旧版本中没有那么复杂。

票数 19
EN

Stack Overflow用户

发布于 2019-08-06 20:25:46

尽管您应该毫无疑问地升级您的当前版本(我建议您离开您现在正在开发的EDB系统,并使用基于社区的Postgres 11),即使您无法升级,分区仍然比创建第二个数据库要好得多。

通过将表重新创建为同一数据库中的一组分区,您将能够以更干净的方式添加/删除数据,这将使处理真空变得更加容易。即使在9.5中,您也可以利用表继承构建分区,方法是首先为传入数据添加分区,然后以不同的间隔(可能是每月一次)创建分区,然后将数据移动到这些分区中。这可以通过一系列INSERT INTO partition SELECT * FROM table WHERE <timestamp>样式的语句来实现。

我怀疑您可以自己管理(您需要基本的sql和编写简单触发器/函数的能力.这里有一个指向9.5博士的链接,但是如果您需要帮助,您可以与Postgres聊天社区中的一个联系,或者如果您想深入了解,可以与支持公司联系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56985861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档