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 命令挂起

pg数据库数据表异常挂起

Excel:使用 VBA 执行 SQL 过程——允许用户继续工作——不要挂起 Excel 应用程序

SSIS 包中的 C# 脚本在 SQL Server 表的数据执行过程中挂起,没有明确的错误消息

某些 Celery 任务启动但挂起并且从不执​​行

SQL Server 生产服务器 - 所有数据库都处于恢复挂起状态