【问题标题】:Snowflake: same queries taking more time using JdbcTemplate雪花:使用 JdbcTemplate 的相同查询需要更多时间
【发布时间】:2022-07-26 13:22:05
【问题描述】:

我是雪花新手,使用 JdbcTemplate 执行查询。

 BasicDataSource dataSource = new BasicDataSource();
 dataSource.setUrl("jdbcUrl");
 dataSource.setDriverClassName(SNOWFLAKE_DRIVER_NAME);
 dataSource.addConnectionProperty(CLIENT_SESSION_KEEP_ALIVE, "true");

 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

在 Snowflake 上面临以下问题:

如果我多次执行相同的查询,并且相同的两个查询之间的间隔 ,则大约需要 300 毫秒。如果相同的两个查询之间的间隔 > 150 秒,则大约需要 1200 毫秒。这些时间来自java代码。 尽管所有查询都使用结果缓存,因为我多次执行相同的查询。

任何人都知道,如果相同的两个查询之间的间隔超过 150 秒,为什么会出现这种延迟?

【问题讨论】:

  • 您是否启用了JDBC logging,并且您在基于事务时间戳的 JDBC 日志中看到了这一点?另外,Snowflake UI 中的查询历史记录中显示的时间是什么时候?
  • 查询历史显示所有查询大约 100 毫秒
  • 如果 Query History 是常量,那么你可能需要查看客户端,所以 DEBUG 模式下的 JDBC 日志会显示更多。
  • 可能与执行查询后挂在数据库上的事务有关(随机假设)。您可能需要考虑在您的服务级别代码中使用 @Transactional 注释,看看它是否有任何不同。

标签: java snowflake-cloud-data-platform jdbctemplate


【解决方案1】:

在 Snowflake 端,AWS 负载均衡器上配置了 150 秒超时。

网络套接字在 150 秒不活动后关闭。这就是为什么所有后续的通信尝试都必须重新初始化连接的原因。这就是出现延迟的原因!

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多