首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个大数据导入AWS RDS Postgres,使其速度慢

将多个大数据导入AWS RDS Postgres,使其速度慢
EN

Stack Overflow用户
提问于 2018-01-10 04:42:00
回答 1查看 1.3K关注 0票数 0

在当前的应用程序中,我们对s3桶进行了日间备份。这些备份以CSV格式每天和每个表进行。

我们的要求是从s3导入一些日期范围的数据,假设我们需要查看2015年1月1日至2015年7月31日的数据,我们从s3下载数据到out ec2实例并导入到新创建的postgres。

但随着时间的推移,进口变得极其缓慢。以下是导入期间所执行的步骤:

  1. 创建具有m3-XLarge和600 m3空间的RDS postgres-9.6实例和通用SSD存储类型。
  2. 关闭副本和多个AZ实例。
  3. 没有外键和索引的导入架构。
  4. 将表设置为未登录并关闭自动真空。
  5. 使用“复制”命令导入。 psql -h <HOST_NAME> -d <database_name> -U <user_name> -c "\COPY TABLE_NAME FROM '<exact_path_of_the_file>' CSV DELIMITER ',' HEADER"

当导入启动时,它很容易在2分钟内消耗2GB的文件。但是,在导入数据一个月之后,导入变得非常缓慢。对于导入相同大小的文件,时间会增加到30分钟(我在比较两个不同日期相同表的文件大小)。

我尝试过将文件分割成更小的块并进行导入,但是没有看到导入时间上的任何改进。

我从RDS监控中观察到,交换空间从0增加到50.不知道这是否正常。任何改善进口的投入都是有帮助的。

提前谢谢。

PS:所有步骤都在命令中

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-11 14:12:09

PIOPS

请求的IOPS速率与分配的存储量的比率非常重要,这取决于您的数据库引擎。例如,对于Oracle来说,比例应该在1:1到50:1之间。您可以从提供一个带有1,000 IOPS和200个GiB存储(比例为5:1)的Oracle实例开始。然后,您可以使用200 GiB的存储量(比为10:1),扩展到2,000 IOPS。您可以使用6 TiB (6144 GiB)的存储(比例为5:1)来扩展多达30,000 IOPS,并且在必要时可以进一步扩展。

Postgres有相同的比率(1:50),而且iops不是字节ps,它的操作,所以当你给8K管道,它不是8KB或MB每秒。我建议您将管道增加到40K,导入数据,然后再减少。

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

https://stackoverflow.com/questions/48180424

复制
相关文章

相似问题

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