Redshift/Java:SQL 执行挂起并且永不返回
Posted
技术标签:
【中文标题】Redshift/Java:SQL 执行挂起并且永不返回【英文标题】:Redshift/Java: SQL execute hangs and never returns 【发布时间】:2015-12-10 23:32:21 【问题描述】:我正在处理的应用程序在 AWS Redshift 上运行一系列查询。由于数据量大,一些查询需要更长的时间来执行。
当我检查服务器上的执行详细信息时,查询似乎在 Redshift 上完成。但是,java 应用程序似乎无限期挂起,没有抛出任何异常甚至终止。
这是执行查询的代码。
private void execSQLStrings(String[] queries, String dataset, String dbType) throws Exception
Connection conn = null;
if (dbType.equals("redshift"))
conn=getRedshiftConnection();
else if (dbType.equals("rds"))
conn=getmysqlConnection();
Statement stmt=conn.createStatement();
String qry=null;
debug("Query Length: " + queries.length);
for (int ii=0;ii<queries.length;++ii)
qry=queries[ii];
if (dataset != null)
qry=qry.replaceAll("DATASET",dataset);
debug(qry);
stmt.execute(qry);
stmt.close();
conn.close();
我目前无法发布正在运行的查询,但它有多个表连接和按条件分组,并且它是一个 800m 行表。在服务器上完成查询大约需要 7~8 分钟。
【问题讨论】:
【参考方案1】:您需要更新 DSN 超时和/或 KeepAlive 设置,以确保您的连接保持活动状态。 参考:http://docs.aws.amazon.com/redshift/latest/mgmt/connecting-firewall-guidance.html
【讨论】:
谢谢!这绝对有帮助。以上是关于Redshift/Java:SQL 执行挂起并且永不返回的主要内容,如果未能解决你的问题,请参考以下文章
从批处理 cmd 窗口执行 SQL Plus SQL 命令挂起
Excel:使用 VBA 执行 SQL 过程——允许用户继续工作——不要挂起 Excel 应用程序