开发者社区> 问答> 正文

数据库SQL-log中没有发现心跳检测语句的记录

下面是我的配置参数: 谁能解释一下呢? 非常感谢

#数据库地址 PAYMENT_JDBC_URL=jdbc:mysql://10.2.1.7:3312/payment?useLocalSessionState=true&autoReconnect=true&zeroDateTimeBehavior=convertToNull PAYMENT_JDBC_USER=paymentuser PAYMENT_JDBC_PASSWORD=paymentuser #配置初始化大小、最小、最大 PAYMENT_JDBC_INITIALSIZE=5 PAYMENT_JDBC_MINIDLE=5 PAYMENT_JDBC_MAXACTIVE=30 #获取连接等待超时的时间 PAYMENT_JDBC_MAXWAIT=60000 #用来检测连接是否有效的sql,要求是一个查询语句 PAYMENT_JDBC_VALIDATIONQUERY=SELECT 1 #空闲连接检测周期,单位是毫秒 PAYMENT_JDBC_EVICTIONRUNSMILLIS=1000 #连接在池中最小生存的时间,单位是毫秒 PAYMENT_JDBC_EVICTABLEIDLETIMEMILLIS=300000 #定时输出统计信息到日志中 PAYMENT_JDBC_TIMEBETWEENLOGSTATSMILLIS=300000 #申请连接的时候检测,如果空闲时间大于空闲连接检测时间执行validationQuery检测连接是否有效 PAYMENT_JDBC_TESTWHILEIDLE=true #申请连接时执行validationQuery检测连接是否有效,配置为true会降低性能 PAYMENT_JDBC_TESTONBORROW=true #归还连接时执行validationQuery检测连接是否有效,配置为true会降低性能 PAYMENT_JDBC_TESTONRETURN=false

原提问者GitHub用户Hinsteny

展开
收起
山海行 2023-07-05 20:43:25 78 0
4 条回答
写回答
取消 提交回答
  • 根据您的配置参数,其中涉及到连接池的一些属性和设置。以下是对每个配置参数的解释:

    PAYMENT_JDBC_URL: 数据库的连接URL。 - PAYMENT_JDBC_USER: 数据库的用户名。 - PAYMENT_JDBC_PASSWORD: 数据库的密码。 - PAYMENT_JDBC_INITIALSIZE: 连接池的初始大小,即初始化时创建的连接数。 - PAYMENT_JDBC_MINIDLE: 连接池中保持的最小空闲连接数。 - PAYMENT_JDBC_MAXACTIVE: 连接池中允许的最大活动连接数。 - PAYMENT_JDBC_MAXWAIT: 获取连接时的最大等待时间,超过此时间将抛出异常。 - PAYMENT_JDBC_VALIDATIONQUERY: 用于检测连接是否有效的SQL语句。例如,SELECT 1表示执行一个简单的查询语句来检测连接是否正常。 - PAYMENT_JDBC_EVICTIONRUNSMILLIS: 连接在池中空闲连接检测周期。 - PAYMENT_JDBC_EVICTABLEIDLETIMEMILLIS: 连接在池中最小生存时间,超过此时间将被销毁。 - PAYMENT_JDBC_TIMEBETWEENLOGSTATSMILLIS: 定期输出连接池统计信息到日志中的时间间隔。 - PAYMENT_JDBC_TESTWHILEIDLE: 在连接空闲时执行心跳检测,默认为true。如果设置为true,会在申请连接时检测连接是否有效。 - PAYMENT_JDBC_TESTONBORROW: 在申请连接时执行心跳检测,默认为true。如果设置为true,会在归还连接时检测连接是否有效。 - PAYMENT_JDBC_TESTONRETURN: 在归还连接时执行心跳检测,默认为false。如果设置为true,会在归还连接时检测连接是否有效。

    这些配置参数用于配置数据库连接池的行为和性能。其中,关于心跳检测语句的记录问题,可能是由于没有正确配置或启用相关的心跳检测机制导致的。您可以根据需要调整上述参数来实现心跳检测语句的记录,具体取决于您使用的连接池和数据库驱动程序的支持。如果有需要,可以查阅相关文档或咨询数据库和连接池供应商以获取更详细的信息和建议。

    2023-07-30 14:12:06
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    心跳检测语句可能不会被记录在数据库的SQL日志中,因为它们通常是由连接池自动发送的,而不是由应用程序直接发送的。如果你需要确认心跳检测语句是否正常工作,可以查看连接池的配置文件或者文档,了解具体的心跳检测设置和机制。

    另外,如果你使用的是JDBC连接,你需要在应用程序中显式地发送心跳检测语句,以确保连接的有效性。在这种情况下,你可以在应用程序中编写相应的代码,定时发送心跳检测语句,并将其记录在SQL日志中,以便跟踪和调试。

    2023-07-30 13:36:28
    赞同 展开评论 打赏
  • PAYMENT_JDBC_VALIDATIONQUERY参数,它用来检测连接是否有效的sql语句,要求是一个查询语句。如果你在这个参数中指定了一个查询语句,那么数据库SQL日志中就可能会出现心跳检测语句的记录。
    PAYMENT_JDBC_TESTWHILEIDLE和PAYMENT_JDBC_TESTONBORROW参数,它们都用来检测连接是否有效的方式。如果你将这两个参数都设置为true,那么在申请连接时和归还连接时都会执行心跳检测语句,这样就可能会在数据库SQL日志中出现心跳检测语句的记录。 因此,如果你想要在数据库SQL日志中出现心跳检测语句的记录,可以尝试在PAYMENT_JDBC_VALIDATIONQUERY参数中指定一个查询语句,或者将PAYMENT_JDBC_TESTWHILEIDLE和PAYMENT_JDBC_TESTONBORROW参数都设置为true。另外,如果你发现数据库SQL日志中没有心跳检测语句的记录,也可以尝试在数据库SQL日志中搜索其他类型的语句,例如SELECT * FROM my_table等,以确定数据库SQL日志是否正常。
    
    2023-07-11 10:18:01
    赞同 展开评论 打赏
  • 缺省是不发心跳语句的,如果需要,配置keepAlive=true

    原回答者GitHub用户wenshao

    2023-07-06 11:45:37
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载