从大型表转储数据的最佳性能策略?

时间:2016-08-23 15:53:25

标签: sql postgresql amazon-redshift postgresql-9.3

我的任务是从代表我们客户群的6,800个表中转储数据(每个表都设置在'shard'中,它们按'cluster'中的区域分组)。在大多数情况下,这些表格非常小​​,但大约有500个,其中行数达到数百万。所有表格的总行数大约为6亿。

我目前的流程是与16名员工同时建立的,到目前为止,我已尝试过三种策略来转储这些大表:

  1. 我首先尝试拉出表格的最大id,然后以200k的增量迭代,直到我使用id之类的内容达到最大WHERE id > lowerBound and id <= upperBound。这就是我们的流程之前的工作方式,并且除了他们开始创建将一些客户端标识号合并在一起的id之外,还将继续工作,并且数以万亿为单位。因此,这些表格中id的范围现在介于1到n万亿之间,这使得这种策略不可行。

  2. 我接下来尝试使用与ORDER BY id混合的LIMIT 200000并进行迭代,直到行数小于LIMIT。事实证明这非常昂贵,花了很长时间才能完成所有表格。

  3. 我最近的尝试是使用COPY命令将大表转储到文件中,然后迭代并处理它们。这似乎需要与之前的解决方案一样多的时间,即使这是我们的DBA推荐的。这个过程最多可能需要24小时才能完成所有数据的提取,这是不可接受的。

  4. 我最终会知道最好的方法是什么。是否有更好的方法来增加类似解决方案1或2?

0 个答案:

没有答案