amazon-web-services - Redshift 卸载到 S3 非常慢

标签 amazon-web-services amazon-s3 amazon-redshift

我在美国西部使用 ds2.xlarge Redshift 集群,数据量约为 1TB。我正在尝试将 50GB 的表卸载到同一区域中的 S3 存储桶,如下所示:

UNLOAD ('select * from table_name') TO 's3://bucket/folder_name/'
CREDENTIALS 'aws_access_key_id=foo;aws_secret_access_key=bar'
MANIFEST;

此查询大约需要 1 小时才能运行。这似乎令人惊讶,因为 Amazon 网站说我们的集群的 I/O 为 0.5GB/s,这意味着 50GB 的表应该用不到 2 分钟的时间上传到 S3,而不是一个小时。 (比广告慢 20-30 倍)

有没有其他人遇到过这个问题和/或找到了修复/解决方法?如果我们决定使用 Redshift,我们每天需要将大约 200GB 的数据从 Redshift 移动到 S3。

最佳答案

对于 Redshift 来说,“重新实现”完整行的成本非常高。这就是 S3 卸载比总磁盘 I/O 慢得多的原因。

数据以针对检索单个列进行优化的方式存储在磁盘上。重新创建完整的行会(有效地)生成随机 I/O 访问。在基于 SSD 的节点类型上,您的卸载速度将

如果您想验证这一点,您可以将所有列(分隔)写入一个包含 1 个 VARCHAR(MAX) 列的表中 - 这会非常慢。然后卸载该表 - 这会快得多。

关于amazon-web-services - Redshift 卸载到 S3 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41667354/

相关文章:

Azure SQL 数据仓库相当于 AWS Redshift 的 "UNLOAD"语句

amazon-web-services - AWS Codepipeline 会将符号链接(symbolic link)传递给工件中的 Codebuild

amazon-web-services - 我可以使用 terraform 在 aws 中注册域吗?

ios - swift: 在将 facebook 当前 token 发送到 AWS Cognito 后接收 AWS id_token?

amazon-web-services - AWS S3 偏移写入

android - 使用传输管理器的 Amazon s3 上传似乎永远不会停止等待

java - 有没有办法在用 Java 创建文件时将文件发送到 AWS S3 存储桶?

.net - 使用 log4net 的 adonetappender 登录到 redshift

java - 将应用程序部署到 AWS Lambda 会引发 Postgres 驱动程序错误

sql - PostgreSQL 中一年窗口模式