2010-08-03 3 views
6

Запрос 1: Лучшие 10 кодов, который принимает максимальное времяЧто такое эквивалентный запрос в 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: Лучшие 10 кодов, который принимает максимальные 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 

, взятые из этого article

+0

Благодарим вас за редактирование, Джон должен сделать вопрос более ясным: как получить: 10 лучших кодов, которые занимают максимальное время и 10 лучших кодов, которые занимают максимальные физические_программы в MYSQL. – Bart

ответ

5

В MySQL вы должны захватить эту информацию из лог-файла, а не с помощью запроса. Кто-то, вероятно, скажет вам, что запрос возможен, но они не справедливы для вас. См.:

http://dev.mysql.com/doc/refman/5.1/en/log-tables.html «В настоящее время регистрация в таблицах приводит к значительно большему количеству накладных расходов на сервер, чем при входе в файлы».

.. достаточно значительный, если вы задаете этот вопрос, вы не хотите его использовать.

Итак, теперь ваш вопрос становится «как вы это делаете с файлом журнала?». Количество физических чтений для запроса не регистрируется в версиях запасов 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.

1

Выбор TOP 10 ... SELECT ... LIMIT 10 в MySQL. Если вы спрашиваете о CROSS APPLY, который не сильно отличается от INNER JOIN, см. When should I use Cross Apply over Inner Join?

+0

На самом деле sam спрашивает о том, как найти SQL-запросы, которые заняли самое длинное для выполнения. –

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

Пожалуйста, исправьте меня, если я ошибаюсь, но я не думаю, что эти динамические объекты управления (sys.dm_exec_query_stats, sys.dm_exec_sql_text) существуют в MySQL. –

+0

oic, извините. Я никогда не замечаю эту часть. Вышел и проигнорировал как обычный стол –

Смежные вопросы