【问题标题】:Is is possible to use Postgresql's Explain to analyse queries generated by Grails GORM是否可以使用 Postgresql 的 Explain 来分析 Grails GORM 生成的查询
【发布时间】:2011-12-21 09:29:12
【问题描述】:

我发现并使用了一个闭包,它暂时将 hibernate.SQL 日志记录到 Trace 以允许我查看生成的确切查询。但是,我希望能够让 PostgresQL 的解释自动运行,而不必单独提取查询进行分析。

日志关闭: (在这里找到:http://www.intelligrape.com/blog/2011/10/21/log-sql-in-grails-for-a-piece-of-code/

 public static def execute(Closure closure) {
    Logger sqlLogger = Logger.getLogger("org.hibernate.SQL");
    Logger transactionLogger = Logger.getLogger("org.hibernate.transaction");
    Level currentLevel = sqlLogger.level
    Level transLevel = transactionLogger.level
    sqlLogger.setLevel(Level.TRACE)
    transactionLogger.setLevel(Level.TRACE)
    def result = closure.call()
    sqlLogger.setLevel(currentLevel)
    transactionLogger.setLevel(transLevel)
    result
}

用法:

def result
    execute{
        result=Dog.createCriteria().list{
            eq("breed","Greyhound")
        }
    }

我想要可以以类似方式使用的东西。

这是我可以用 Criteria 或 Hibernate.Restrictions 的子类做的事情吗?

或者我在文档中是否缺少关于如何修改从 GORM 发送到数据库的 SQL 语句的内容?

感谢您提供任何信息。

【问题讨论】:

    标签: sql hibernate postgresql grails grails-orm


    【解决方案1】:

    假设您不想要所有查询,而只想要运行时间较长的查询,您可能会发现 PostgreSQL 的“自动解释”插件很有用。

    http://www.postgresql.org/docs/9.1/static/auto-explain.html

    【讨论】:

    • 不完全是我想要的,但它满足所有实际要求。我已经配置了 auto_explain,现在可以对本地数据库上的查询自动运行解释分析。谢谢,
    猜你喜欢
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多