Hibernate或JPA如何找到慢SQL查询(Wildfly)

数据持久性是影响应用程序性能的关键因素之一。因此,跟踪数据库语句的性能至关重要。首先,需要强调的是,你可以通过以下方法之一记录Hibernate发出的语句:

1、 在你的persistence.xml 中添加hibernate.show_sql 属性:

<properties>
    ...
    <property name="hibernate.show_sql" value="true" />
    ...
</properties>

2、启用以下类别的日志记录(使用log4j.properties文件):

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

3、通过为org.hibernate.SQL命名空间创建日志处理程序:

/subsystem=logging/periodic-rotating-file-handler=sql_handler:add(level=ALL, file={"path"=>"sql.log"}, append=true, autoflush=true, suffix=.yyyy-MM-dd,formatter="%d{yyyy-MM-dd HH:mm:ss,SSS}")

/subsystem=logging/logger=org.hibernate.SQL:add(use-parent-handlers=false,handlers=["sql_handler"])

/subsystem=logging/logger=org.hibernate.type.descriptor.sql.BasicBinder:add(use-parent-handlers=false,handlers=["sql_handler"])

4、启用监视SQL语句:

/subsystem=datasources/data-source=ExampleDS/:write-attribute(name=spy,value=true)

/subsystem=logging/logger=jboss.jdbc.spy/:add(level=DEBUG)

除了记录SQL语句之外,由于Hibernate 5.4.5,一个名为hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS的新属性可以用来显示比特定阈值(毫秒)慢的查询。这个属性可以添加到你的persistence.xml文件中,如下所示:

<properties>
    ...
    <property name="hibernate.session.events.log.LOG_QUERIES_SLOWER_THAN_MS" value="100"/>
    ...
</properties> 

要将慢速查询记录到单独的文件中,请配置如下日志:

/subsystem=logging/periodic-rotating-file-handler=slow_sql_handler:add(level=INFO, file={"path"=>"slowsql.log"}, append=true, autoflush=true, suffix=.yyyy-MM-dd,formatter="%d{yyyy-MM-dd HH:mm:ss,SSS}")

/subsystem=logging/logger=org.hibernate.SQL_SLOW:add(use-parent-handlers=false,handlers=["slow_sql_handler"])

由于该特性需要Hibernate版本5.4.5,如果您的应用服务器还不支持该版本,推荐的选项是在您的应用程序中绑定最新的Hibernate版本,以便您将覆盖它的默认版本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shibushi114

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值