在Amazon Redshift中运行长查询时(> 30分钟),我遇到了一个奇怪的问题。这些查询在完成时不提供反馈,即使它们在查看Redshift控制台或查询stv表时已完成。
我们在SQL Workbench / J中对此进行了测试,它使用JDBC驱动程序和Node.js应用程序,使用仅限Javascript的驱动程序。在所有情况下,查询都会永远存在并且永远不会完成,即使出现错误也是如此。
答案 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'
请记住,这将创建多个文件(每个节点至少一个),您必须将它们合并为一个。