【问题标题】:what is the equivalent query in mysql?mysql中的等效查询是什么?
【发布时间】:2011-03-24 12:29:18
【问题描述】:

查询 1:耗时最长的前 10 个代码

select top 10 
  source_code,
  stats.total_elapsed_time/1000000 as seconds,
  last_execution_time from sys.dm_exec_query_stats as stats
cross apply(SELECT 
              text as source_code 
            FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
order by total_elapsed_time desc

Query2:物理读取次数最多的前 10 个代码

select top 10 
  source_code,
  stats.total_elapsed_time/1000000 as seconds,
  last_execution_time from sys.dm_exec_query_stats as stats
cross apply(SELECT 
              text as source_code 
            FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
order by total_physical_reads desc

取自article

【问题讨论】:

  • 感谢 John 的编辑,这应该让问题更清楚:如何获得:在 MYSQL 中花费最多时间的前 10 个代码和花费最多物理读取的前 10 个代码。

标签: mysql sql-server


【解决方案1】:

在 MySQL 中,您需要从日志文件中捕获此信息,而不是通过查询。有人可能会告诉您可以进行查询,但他们对您不公平。见:

http://dev.mysql.com/doc/refman/5.1/en/log-tables.html “目前,记录到表会比记录到文件产生更多的服务器开销。”

.. 足够重要,如果你问这个问题,你不想使用它。

所以现在您的问题变成了“如何使用日志文件执行此操作?”。查询的物理读取次数未记录在 stock-MySQL 版本中。虽然它在 Percona Server 中可用。增强效果很棒(即使我有偏见,我也为 Percona 工作):

http://www.percona.com/docs/wiki/patches:slow_extended

下一个问题是如何汇总日志以便找到这些详细信息。为此,我建议使用 mk-query-digest。 http://www.maatkit.org/doc/mk-query-digest.html.

【讨论】:

    【解决方案2】:

    SELECT TOP 10 ... 在 MySQL 中是 SELECT ... LIMIT 10。如果您询问与 INNER JOIN 没有太大区别的 CROSS APPLY,请参阅When should I use Cross Apply over Inner Join?

    【讨论】:

    • 其实 sam 是在问如何找到执行时间最长的 SQL 查询。
    【解决方案3】:

    你看过这个关于 ServerFault 的问答吗?

    How do I profile MySQL?

    【讨论】:

      【解决方案4】:
      select 
      source_code,
      stats.total_elapsed_time/1000000 as seconds,
      last_execution_time from sys.dm_exec_query_stats as stats
      inner join(SELECT 
                text as source_code 
              FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
      order by total_elapsed_time desc 
      limit 10  
      

       

      select
      source_code,
      stats.total_elapsed_time/1000000 as seconds,
      last_execution_time from sys.dm_exec_query_stats as stats
      inner join(SELECT 
                text as source_code 
              FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
      order by total_physical_reads desc
      limit 10 
      

      【讨论】:

      • 如果我错了请纠正我,但我认为MySQL中不存在那些动态管理对象(sys.dm_exec_query_stats,sys.dm_exec_sql_text)。
      • oic,对不起。我从来没有注意到那部分。作为一张普通的桌子错过了和忽视
      猜你喜欢
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多