Amazon Redshift中的长查询永远不会返回

时间:2014-01-30 13:00:55

标签: postgresql amazon-redshift

在Amazon Redshift中运行长查询时(> 30分钟),我遇到了一个奇怪的问题。这些查询在完成时不提供反馈,即使它们在查看Redshift控制台或查询stv表时已完成。

我们在SQL Workbench / J中对此进行了测试,它使用JDBC驱动程序和Node.js应用程序,使用仅限Javascript的驱动程序。在所有情况下,查询都会永远存在并且永远不会完成,即使出现错误也是如此。

2 个答案:

答案 0 :(得分:7)

您可以尝试在连接字符串的末尾添加?tcpKeepAlive=true。我觉得它在一些长时间运行的查询中很有用。

对于您的操作系统的其他TCP保持活动设置也是如此。

例如,对于Mac:

sudo sysctl -w net.inet.tcp.always_keepalive=1

您可能还希望优化查询,而不是花费太长时间。有很多选项,取决于您的实际查询。但是,使用基于SSD的新节点可以获得快速改进:http://aws.amazon.com/about-aws/whats-new/2014/01/23/amazon-redshift-ssd-node-type/

答案 1 :(得分:0)

我认为你的连接超时有问题。

如果您的查询应返回某些行(SELECT),可能会尝试将UNLOAD结果导入S3存储桶?

UNLOAD ('
   YOUR LONG RUNNING SELECT HERE
')
TO 's3://some_bucket/some/path/to/files'
WITH CREDENTIALS AS 'aws_access_credentials'

请记住,这将创建多个文件(每个节点至少一个),您必须将它们合并为一个。

相关问题