Redshift 插入瓶颈

Redshift insert bottleneck

我正在尝试将大量 table 从 postgres 迁移到 Redshift。

  1. table的大小约为5,697,213,832

  2. 工具:pentaho Kettle Table 输入(来自 postgres)-> Table 输出(Redshift)

  3. 连接 Redshift JDBC4

通过观察我发现插入Redshift是瓶颈。只有大约 500 rows/second.

有什么方法可以加快单机模式下插入Redshift的速度吗?喜欢使用 JDBC 参数?

您是否考虑过使用 S3 作为中间层?

将您的数据转储到 csv 文件并应用 gzip 压缩。上传文件到S3,然后使用copy命令加载数据。

http://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html

Redshift 性能瓶颈的主要原因,我认为是 Redshift 将对集群的每次命中都视为一个查询。它在其集群上执行每个查询,然后进入下一阶段。现在,当我发送多行(在本例中为 10 行)时,每行数据都被视为一个单独的查询。 Redshift 逐条执行每个查询,并在执行完所有查询后完成数据加载。这意味着如果您有 1 亿行,那么您的 Redshift 集群上将有 1 亿个查询 运行。好吧,性能下降了!!!

在 redshift 集群上使用 S3 File Output step in PDI will load your data to S3 Bucket and then apply the COPY 命令将相同的数据从 S3 读取到 Redshift。这将解决您的性能问题。

您还可以阅读以下博客链接:

  1. Loading data to AWS S3 using PDI
  2. Reading Data from S3 to Redshift

希望这对您有所帮助:)

最好将数据导出到S3,然后使用COPY 命令将数据导入Redshift。这样,导入过程很快,而且你不需要清理它。

将您的数据导出到 S3 存储桶并在 Redshift 中使用 COPY 命令。 COPY 命令是在 Redshift 中插入数据的最快方式。