Redshift 插入瓶颈
Redshift insert bottleneck
我正在尝试将大量 table 从 postgres 迁移到 Redshift。
table的大小约为5,697,213,832
工具:pentaho Kettle Table 输入(来自 postgres)-> Table 输出(Redshift)
连接 Redshift JDBC4
通过观察我发现插入Redshift是瓶颈。只有大约 500 rows/second.
有什么方法可以加快单机模式下插入Redshift的速度吗?喜欢使用 JDBC 参数?
您是否考虑过使用 S3 作为中间层?
将您的数据转储到 csv 文件并应用 gzip 压缩。上传文件到S3,然后使用copy
命令加载数据。
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。这将解决您的性能问题。
您还可以阅读以下博客链接:
希望这对您有所帮助:)
最好将数据导出到S3,然后使用COPY 命令将数据导入Redshift。这样,导入过程很快,而且你不需要清理它。
将您的数据导出到 S3 存储桶并在 Redshift 中使用 COPY 命令。 COPY 命令是在 Redshift 中插入数据的最快方式。
我正在尝试将大量 table 从 postgres 迁移到 Redshift。
table的大小约为5,697,213,832
工具:pentaho Kettle Table 输入(来自 postgres)-> Table 输出(Redshift)
连接 Redshift JDBC4
通过观察我发现插入Redshift是瓶颈。只有大约 500 rows/second.
有什么方法可以加快单机模式下插入Redshift的速度吗?喜欢使用 JDBC 参数?
您是否考虑过使用 S3 作为中间层?
将您的数据转储到 csv 文件并应用 gzip 压缩。上传文件到S3,然后使用copy
命令加载数据。
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。这将解决您的性能问题。
您还可以阅读以下博客链接:
希望这对您有所帮助:)
最好将数据导出到S3,然后使用COPY 命令将数据导入Redshift。这样,导入过程很快,而且你不需要清理它。
将您的数据导出到 S3 存储桶并在 Redshift 中使用 COPY 命令。 COPY 命令是在 Redshift 中插入数据的最快方式。