Главная » Статьи » Базы данных » MySQL |
ВступлениеMySQL в сочетании с РНР является одним из наиболее часто используемых движков баз данных. Направить усилия на то, чтобы ваши базы данных MySQL работали наилучшим образом, это то, что вы должны сделать в первую очередь, когда веб-приложение начинает расти. В этой серии статей мы рассматриваем, как мы можем оптимизировать установки MySQL. Мы расскажем, как можно оптимизировать нашу базу, конфигурацию MySQL, и как мы можем найти потенциальные проблемы, когда MySQL не работает идеально. Для работы с нашей базой данных мы будем использовать в основном инструменты из Percona Toolkit. Эта статья посвящена обнаружению причин возникновения проблем. Активация журнала медленных логов для нахождения проблемных мест MySQLПрежде всего, нам нужно активировать журнал медленных логов. В журнале медленных логов MySQLбудет сообщаться о любых запросах, которые занимают времени больше, чем установлено. Кроме того, он может дать информацию о любом запросе, не использующем индексы. Активировать журнал медленных логов просто. Все, что вам нужно сделать, это изменить конфигурационный файл MySQL (который в большинстве случаев находится по адресу/etc/mysql/my.cnf) и добавить в него следующие строки:
Любой запрос, который занимает больше одной секунды или не использует индексы, добавляется в этот журнал. Анализ журнала медленных логовВы можете проанализировать ваш журнал медленных логов вручную, перебирая каждый запрос. Однако можно использовать и автоматизированный инструмент, например pt-query-digest. С его помощью вы можете проанализировать ваш журнал медленных логов, и он автоматически отсортирует все запросы по времени исполнения. Давайте запустим его pt-query-digest /var/log/mysql/mysql-slow.log:
Обратите внимание, что у меня было 8 медленных запросов, 6 из них - уникальные. Далее мы видим таблицу с указанием времени, которое заняли определенные действия. Просмотрите столбец с заголовком 95%, так как в нем приводятся оптимальные средние показатели:
Теперь начинается самое интересное. Видимо это запросы, которые были идентифицированы, как медленные. Обратите внимание, что в моем примере запросы на самом деле не являлись медленными, и были внесены в журнал, потому что не использовали индекс. Давайте рассмотрим первый вид запросов более подробно:
Это, пожалуй, самая важная часть исходящей информации. Здесь мы видим данные по первому запросу в таблице. Еще раз проверяем столбец 95%. Вы можете также видеть, сколько времени потребовалось на обработку запроса, и сколько данных было отправлено. Вы также можете увидеть, в какую категорию, в зависимости от времени обработки, попал этот запрос. В данном случае он принадлежит диапазону от 100 микросекунд до 1 миллисекунды. И, наконец, мы видим фактически сам запрос, который был выполнен. Для каждого запроса, вы получите такую детальную информацию. Вы можете использовать ее, чтобы проанализировать, какие запросы не использовали индексы, а какие были медленными. Анализ MySQL при возникновении проблемЕще один интересный инструмент Percona это pt-stalk. С помощью этого инструмента вы можете получить обзор того, что происходит в MySQL в определенные моменты времени. Давайте предположим, что сегодня, мы хотим проверить состояние MySQL 4 раза. Мы можем сделать это, запустив следующую команду:
После каждой итерации, pt-stalk записывает все виды данных в папку `/var/lib/pt-stalk/’. В ней Вы найдете такой список файлов:
По названию файла вы уже можете догадаться, что в нем содержится. Данные по использованию дискового пространства, список процессов - кое-что, из того, что вы можете найти в этом файле. Такой файл создается для каждой итерации выполнения команды. Ну, все это, конечно, интересно, но было бы еще более интересно, получить такие данные на моменты времени, когда что-то идет не так. К счастью, мы можем настроить pt-stalk так, чтобы проверка запускалась при достижении определенных пороговых значений. Скажем, мы хотим посмотреть, что происходит в тот момент, когда у нас есть 100 подключений:
Добавив --dameonize, мы указываем инструменту работать в фоновом режиме, пока он не будет остановлен. Остальные параметры будут настроены так, чтобы начинать заносить логи в журнал, как только на сайте зарегистрировано 100 соединений одновременно. Журнал логов, который вы получите, будет точно таким же, как мы описали выше. Конечно, вы можете использовать и другие условия. Если вы знаете, в чем заключается проблема, вы можете настроить pt-stalk так, чтобы запись начиналась, как только эта проблема возникает. При том, вы также можете проанализировать лог-файлы и посмотреть, происходит ли что-нибудь странное. ЗаключениеЭто заключение нашего обзора Percona Toolkit. Мы показали вам много инструментов от Toolkit Percona, которые вы можете использовать, чтобы оптимизировать или проинспектировать конфигурацию MySQL и базы данных. Если вам интересно узнать о других инструментах Percona, которые еще не были рассмотрены, зайдите, пожалуйста, на эту страницу, и вы найдете там информацию о том, что еще можно сделать с помощью этого инструмента. Оставьте свой отзыв ниже! | |
Просмотров: 499 | |
Всего комментариев: 0 | |