2010-08-03 23 views
6

Consulta 1: Los 10 códigos que lleva tiempo máximo¿cuál es la consulta equivalente en mysql?

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: Los 10 códigos que tarda como máximo physical_reads

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 

tomadas de esta article

+0

Gracias John por la edición, eso debería aclarar la pregunta: cómo obtener: los 10 códigos principales que requieren el máximo de tiempo y los 10 códigos principales que requieren un máximo de physical_reads en MySQL. – Bart

Respuesta

5

En MySQL que necesita para capturar esta información de un archivo de registro, y no a través de una consulta. Es probable que alguien le diga que una consulta es posible, pero no son justos con usted. Ver:

http://dev.mysql.com/doc/refman/5.1/en/log-tables.html "Actualmente, el inicio de sesión en las tablas implica una sobrecarga del servidor significativamente mayor que el registro en los archivos."

... lo suficientemente significativo como para que, si hace esta pregunta, no la quiera usar.

Ahora su pregunta es "¿cómo se hace esto con un archivo de registro?". El número de lecturas físicas para una consulta no se registra en el stock-versiones de MySQL. Sin embargo, está disponible en Servidor Percona. La mejora es impresionante (aunque soy parcial, trabajo para Percona):

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

La siguiente pregunta es ¿cómo agregada el registro para que pueda encontrar estos detalles. Para eso, sugiero mk-query-digest. http://www.maatkit.org/doc/mk-query-digest.html.

1

SELECT TOP 10 ... es SELECCIONADO ... LÍMITE 10 en MySQL. Si está preguntando acerca de CROSS, solicite que no sea muy diferente de INNER JOIN, consulte When should I use Cross Apply over Inner Join?

+0

en realidad, Sam está preguntando cómo encontrar las consultas SQL que han tardado más en ejecutarse. –

0
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 
+0

Corrígeme si me equivoco, pero no creo que esos objetos de administración dinámica (sys.dm_exec_query_stats, sys.dm_exec_sql_text) existan en MySQL. –

+0

oic, lo siento. Nunca me doy cuenta de esa parte. Olvidada y pasada por alto como una mesa normal –

Cuestiones relacionadas