【问题标题】:Is there a way to use an actual SQL Query (using Performance_schema from MySql) in SpringBoot?有没有办法在 SpringBoot 中使用实际的 SQL 查询(使用 MySql 的 Performance_schema)?
【发布时间】:2020-06-22 05:59:34
【问题描述】:

我是 Spring 和 SpringBoot 的新手。 我来到这里是因为我找不到在使用 Spring 对本地 MysqlDB 的查询中使用 Performance Schema 的方法。

我尝试使用 @Query 注释,但发现它使用 JPQL。

我的查询

    SELECT EVENT_ID, TRUNCATE(TIMER_WAIT / 1000000000000, 6) AS Duration, SQL_TEXT 
    FROM performance_schema.events_statements_history_long
    WHERE (TRUNCATE(TIMER_WAIT / 1000000000000, 6)) > 0.002;

(请忽略这个可怕的查询,我只是想表明我想使用 performance_schema 表) 我看到的是我应该使用 JPQL 进行查询,但是如果 performance_schema 是“隐藏的”,我不知道我该怎么做。

我正在尝试在我的数据库中获取有关查询的信息,并进行一般监控。这就是我使用 Performance Schema 的原因。

我很想知道如何传递此查询,或者是否有其他方法可以从我的数据库中获取此类信息(不仅是此查询,这是我将要做的一个示例)。

另外,为什么关于性能模式的信息这么少。不好吗?还有其他我找不到的工具吗?

谢谢大家

【问题讨论】:

    标签: java mysql spring spring-boot spring-data-jpa


    【解决方案1】:

    那里没有关于查询的信息https://en.wikipedia.org/wiki/Information_schema 数据库本身使用此结构来优化查询(通常)。

    【讨论】:

      【解决方案2】:
      • 旧版本的 MySQL 没有PERFORMANCE_SCHEMA。你用的是什么版本?
      • TRUNCATE()??也许您的意思是FLOOR()ROUND()
      • 另见

        EXPLAIN SELECT ...
        EXPLAIN FORMAT=JSON SELECT ...
        the slowlog -- turn on and have `long_query_time = 1`.
        

      【讨论】:

      • 我的查询在 MySql Workbench 上运行良好。它给了我我需要的信息。也许我的帖子不清楚。我想使用 Spring Boot 使用该查询,但我找不到使用“原始”SQL 从 MySql 获取性能详细信息(即执行时间)的方法
      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 2013-06-17
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多