Как отследить записи Mysql Slow-query-log-file с помощью PHP Profiler - PullRequest
0 голосов
/ 02 июня 2019

Я только начал использовать PHP profiler для поиска файлов в php скрипте, что вызывало медленные запросы mysql.Некоторые предположили, что я использую xdebug , чтобы отслеживать его по метке времени из медленной записи в файле журнала по сравнению с файлами в php profiler, которые были выполнены в то же время.

Я прочиталДокументация по xdebug, но не могу найти объяснение этой проблемы.

Может ли кто-нибудь дать мне просветление?

Я использую php 7.0, Debian 9.

Мой медленныйЗаписи файла журнала запросов:

# Thread_id: 222244  Schema: user  QC_hit: No
# Query_time: 51.019708  Lock_time: 0.000119  Rows_sent: 1  Rows_examined: 13295012
# Rows_affected: 0
SET timestamp=1559388099;
SELECT (COUNT(*)) AS `count` 
FROM statistics Statistics WHERE (id >= 1 AND ad_type <> 3);

Редактировать:

Дело не в подсчете строк в операторе SELECT, а в том, как отслеживать файлы приложения, которые вызывают медленные запросы.

1 Ответ

0 голосов
/ 02 июня 2019

Самый эффективный способ подсчета больших таблиц заключается в том, что вы должны хранить счет в таблице где-то еще и увеличивать / уменьшать это значение, когда это необходимо, таким образом, вы запрашиваете только одну ячейку, а 51-секундный запрос становится меньше, чем 1 секунда.

Я знаю, что это излишняя вещь, но это самый эффективный и оптимальный способ

Существуют темы, которые предлагают запрашивать INFORMATION_SCHEMA, но это совершенно не помогает, учитывая вашу потребность в WHERE, а все остальное столь же неэффективно, как и ваша проблема здесь.

Все, что вам нужно, это текущий счет, место для его хранения, функциональность для его увеличения / уменьшения, и вы готовы идти

...