gpt4 book ai didi

sql - 如何计算 hibernate 在一个 Grails 请求中执行了多少个 SQL 查询?

转载 作者:行者123 更新时间:2023-12-03 01:22:22 25 4
gpt4 key购买 nike

我需要通过一个非常慢的请求来调试 Grails 应用程序。我有 SQL 日志记录,但希望查看 SQL 查询的数量,而不需要手动计数。

debug    'org.hibernate.SQL'
trace 'org.hibernate.type'

例如,每个请求后都有以下行(其中 x 是对 SQL Server 进行的所有查询的数量):

[2012-10-04 13:41:45,049][LoggingFilters] INFO - 请求在 8296 毫秒内完成并生成 x SQL 语句

经过一番谷歌搜索后,这似乎对于 Grails 来说是不可能的,所以也许 MySQL 可以提供这些信息?

最佳答案

您可以通过使用过滤器和 Hibernate 统计信息来完成此操作。在conf文件夹中创建类ExampleFilters.groovy。这是类(class)内容:

import org.hibernate.stat.Statistics
class ExampleFilters {

def sessionFactory


def filters = {
// your filters here

logHibernateStats(controller: '*', action: '*') {
before = {
Statistics stats = sessionFactory.statistics;
if(!stats.statisticsEnabled) {stats.setStatisticsEnabled(true)}
}

afterView = {
Statistics stats = sessionFactory.getStatistics()
double queryCacheHitCount = stats.getQueryCacheHitCount();
double queryCacheMissCount = stats.getQueryCacheMissCount();
double queryCacheHitRatio = (queryCacheHitCount / ((queryCacheHitCount + queryCacheMissCount) ?: 1))
println """
######################## Hibernate Stats ##############################################
Transaction Count:${stats.transactionCount}
Flush Count:${stats.flushCount}
Total Collections Fetched:${stats.collectionFetchCount}
Total Collections Loaded:${stats.collectionLoadCount}
Total Entities Fetched:${stats.entityFetchCount}
Total Entities Loaded:${stats.entityFetchCount}
Total Queries:${stats.queryExecutionCount}
queryCacheHitCount:${queryCacheHitCount}
queryCacheMissCount:${queryCacheMissCount}
queryCacheHitRatio:${queryCacheHitRatio}
######################## Hibernate Stats ##############################################
"""
stats.clear()
}

}

}

}

要了解有关各种 Hibernate 统计信息的更多信息,请阅读本文: http://www.javalobby.org/java/forums/t19807.html

另请注意,使用此功能会对性能产生影响,因此它实际上应该仅在开发环境中使用。

关于sql - 如何计算 hibernate 在一个 Grails 请求中执行了多少个 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12724594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com