Spring Boot 应用程序对 postgres 执行大量 SET application_name 查询

edo*_*Dev 6 postgresql spring-jdbc spring-data spring-data-jpa hikaricp

我有一个 Spring Boot 应用程序 (v2.1.5),它使用 JPA (Hibernate) 连接到 Postgres DB。Spring Boot 使用 HikariCP 进行连接池。在我的生产环境中,我看到以下查询每隔几秒执行一次,无论数据库活动如何(几乎就像它们是某种运行状况检查?):

SET application_name = 'PostgreSQL JDBC Driver'
Run Code Online (Sandbox Code Playgroud)

我正在努力弄清楚为什么这些查询如此频繁地执行,以及是否可以避免它们,因为在我的本地环境中,仅在对数据库执行查询时才执行上述语句。我仍然不明白为什么,但与生产相比,它的频率较低且行为不同。

这些询问有必要吗?它们可以避免吗?谢谢。

更新:

以下是 Spring boot 应用程序使用 HikariCP 连接到的数据库收到的查询的屏幕截图。时间显示为“刚刚”,因为显示的所有查询仅相隔约 0.5 秒,并且都在“当前分钟”内。

在此输入图像描述

Jen*_*der 3

这似乎是由Hikari连接池执行的。请参阅启动 Spring Boot 应用程序的默认 HikariCP 连接池及其答案。

我不会担心它,因为它不会执行“极高数量”的这些操作,而是每隔几秒执行一次,可能每当连接被分发或返回到池时执行一次。

如果它确实困扰您,您可以查看各个地方来禁用它。

这里的最后一条评论表明将连接属性设置assumeMinServerVersion为 9.0 或更高可能会有所帮助。

由于这可能是由HikariConnectionPool它触发的,因此可以通过配置启动、借出和返回连接时的行为来进行配置。