【发布时间】: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