Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 调整参数后,将数据加载到Postgres RDS的速度仍然很慢_Postgresql_Amazon Web Services_Rds - Fatal编程技术网

Postgresql 调整参数后,将数据加载到Postgres RDS的速度仍然很慢

Postgresql 调整参数后,将数据加载到Postgres RDS的速度仍然很慢,postgresql,amazon-web-services,rds,Postgresql,Amazon Web Services,Rds,我们已经创建了一个RDS postgres实例(m4.xlarge),具有200GB的存储空间(配置的IOPS)。我们正在尝试使用DataStage将数据从公司数据集市上传到RDS中的23个表中。但是上传速度相当慢。加载40万条记录大约需要6个小时 然后,我开始根据以下参数调整以下参数: 除此之外,我还关闭了multi-AZ和备份。虽然启用了SSL,但不确定这是否会改变任何内容。然而,经过所有的改变,仍然没有多大的改善。DataStage正在并行上传数据,已经有12个线程。写入IOPS约为40/

我们已经创建了一个RDS postgres实例(m4.xlarge),具有200GB的存储空间(配置的IOPS)。我们正在尝试使用DataStage将数据从公司数据集市上传到RDS中的23个表中。但是上传速度相当慢。加载40万条记录大约需要6个小时

然后,我开始根据以下参数调整以下参数:


除此之外,我还关闭了
multi-AZ
和备份。虽然启用了SSL,但不确定这是否会改变任何内容。然而,经过所有的改变,仍然没有多大的改善。DataStage正在并行上传数据,已经有12个线程。写入IOPS约为40/秒。这个值正常吗?我还能做些什么来加速数据传输吗

在Postgresql中,您必须为编写的每个insert语句等待1次完整的往返(延迟)。此延迟是从数据库一直到加载数据的机器之间的延迟

在AWS中,有许多选项可以提高性能

  • 对于初学者,您可以将原始数据加载到EC2实例并从那里开始导入,但是,除非可以直接加载到EC2实例上,否则很可能无法使用dataStage工具

  • 您可以将dataStage配置为使用批处理,其中每个insert语句实际上包含许多行。。一般来说,数量越多,速度越快

  • 禁用数据压缩,并确保已尽一切努力最小化两个端点之间的延迟


  • 您的RDS实例是否可以公开访问?它是否还要通过NAT或其他网络瓶颈(代理、VPN等)。。您是否仍启用了一组索引?另外,您的数据有多大(meg,而不是行)@JoeLove实例是可公开访问的,没有代理或vpn等。总数据约为50GB。在5小时内加载了大约10GB的数据。您是否从AWS以外的地方加载数据?如果您没有将数据复制到EC2实例并尝试从那里加载数据,那么您可能看到了您和RDS之间往返时间的影响。或者,尝试更多线程来部分补偿往返。如果批次大小确实进行了批处理,则将由ETL工具DataStage确定。不是通过RDS PostgreSQL。
    autovacuum  0
    checkpoint_completion_target  0.9
    checkpoint_timeout  3600
    maintenance_work_mem  {DBInstanceClassMemory/16384}
    max_wal_size  3145728
    synchronous_commit  off