Не секрет, что многие стремительно развивающиеся веб-проекты со временем начинают «тормозить». Страницы загружаются все медленнее, пользователи начинают нервничать, появляются проблемы с хранением данных и многие другие последствия высокой нагрузки. Большинство веб-мастеров считают причиной происходящего неподходящий хостинг-тариф, но смена тарифного плана далеко не всегда помогает решить проблему. В чем же дело?
Скорее всего, истинной причиной происходящего является недостаточная оптимизация MySQL. При этом с подобной проблемой может столкнуться практически любой веб-мастер. Даже небольшие блоги иногда доставляют проблемы своим владельцам, что уж говорить о проектах с более высокими нагрузками. Что же делать?
Наш виртуальный хостинг сайтов позволяет легко автоматически оптимизировать базу данных MySQL.
Нужно оптимизировать базу данных MySQL. Сделать это можно как самостоятельно, так и обратившись за помощью к специалистам.
Как выглядит MySQL-оптимизация производительности?
Если вы намерены заняться этим самостоятельно, то вам следует понимать, каким образом и для чего выполняются те или иные действия. В целом весь объем работы можно разделить на 3 вида операций:
- Оптимизация MySQL-запросов
Работа в этом направлении дает наиболее быстрый и наглядный результат. В первую очередь вам нужно смириться с правилом: чем больше привилегий в базе данных прописано, тем медленнее она будет работать. Если же нужно обрабатывать очень большой массив данных, то лучше обойтись без привилегий вообще. В целом все функции в запросах MySQL достаточно хорошо оптимизированы, но бывают и исключения. В том случае, когда проблемной является некая явная функция, ее можно протестировать в самом клиенте. О том, как именно оптимизируются запросы в MySQL вы можете узнать из официальной справки.
- Оптимизация MySQl-таблиц
Чтобы оптимизировать таблицы, убрать фрагментарность данных в них, а также избавиться от возникающих из-за добавления и удаления записей потерь пространства, нужно использовать следующую команду в режиме восстановления: shell> myisamchk -r tbl_name, где tbl_name — имя таблицы, которую нужно оптимизировать.
- Оптимизация MySQL-сервера
Этот тип операций недоступен для владельцев виртуального хостинга. Если же вы владелец VPS или выделенного сервера, то можете попробовать изменить его технические параметры или же поэкспериментировать с перераспределением ресурсов. Впрочем, такого рода оптимизация редко дает значительное улучшение быстродействия, а для ее выполнения требуется определенный багаж опыта и знаний.
Также нельзя не упомянуть об InnoBD — одной из подсистем низкого уровня в MySQL. Оптимизация InnoBD способна помочь крупным проектам выдержать высокие нагрузки, так как для каждой отдельной таблицы создается отдельный файл данных. Такой формат обеспечивает высокую надежность хранения данных и позволяет в определенной степени улучшить быстродействие сайта в целом.
MySQL-оптимизация производительности — практические рекомендации
Если же говорить о конкретных рекомендациях по оптимизации, то можно предложить следующие варианты:
- Оптимизация настроек сервера при помощи утилиты MySQLTuner;
- Оптимизация таблиц при помощи phpMyAdmin;
- Оптимизация запросов при помощи Slow query log.
Давайте рассмотрим каждый из этих вариантов подробнее.
Оптимизация настроек сервера при помощи MySQLTuner
MySQLTuner — это скрипт, написанный на языке Perl, предназначенный для выявления проблемных мест в настройке сервера MySQL. Его не нужно устанавливать, достаточно просто скачать и запустить. Для запуска используется команда perl mysqltuner.pl. После запуска скрипт запросит логин и пароль администратора сервера, а после ввода проведет анализ и выдаст результат в нескольких секциях:
- Информационный блок про запуск
- Блок -General Statistics-
- Блок -Storage Engine Statistics-
- Блок -Security Recommendations —
- Блок -Performance Metrics-
- Блок -Recommendations-
Следуя рекомендациям этой утилиты можно оптимизировать работу вашего сервера MySQL. Основное внимание следует уделять символам [!!] и последней секции, то есть блоку -Recommendations-. Именно здесь показаны рекомендуемые настройки.
В секции -Recommendations- есть два поля — General recommendations и Variables to adjust. Все параметры, указанные после Variables to adjust, нужно найти в файле конфигурации my.cnf и изменить на рекомендуемые. После внесения всех изменений следует перезапустить сервер MySQL для корректного сохранения конфигурации.
Оптимизация таблиц при помощи phpMyAdmin
Чтобы понять, какие таблицы требуют оптимизации, вам нужно выполнить следующие действия:
- Зайти в интерфейс phpMyAdmin;
- Выбрать нужную базу данных;
- Вывести весь список таблиц выбранной БД;
- Посмотреть на столбец «Фрагментировано».
Если таблицы фрагментированы, то их желательно оптимизировать при помощи phpMyAdmin, так как они будут давать дополнительную нагрузку на сервер. Для оптимизации нужно:
- Отметить фрагментированные таблицы, нажав на кнопку «Отметить требующие оптимизации». Если оптимизация до этого никогда не выполнялась, то лучше выбрать «Отметить все».
- Выбрать действие «Оптимизировать таблицу».
Так вы сможете легко и быстро оптимизировать все таблицы в вашей базе данных. Естественно, перед этой процедурой желательно сделать резервную копию БД во избежание различных непредвиденных ситуаций. Если же оптимизация таблиц не помогла, и база данных все равно создает слишком большую нагрузку, лучше вынести ее на отдельные SSD-диски или отдельный сервер.
Оптимизация запросов при помощи Slow query log
Очевидно, что для оптимизирования запросы нужно сначала найти, и новичку достаточно сложно самостоятельно определить, «тяжелый» этот запрос или нет. Именно для этого существует Slow query log — журнал медленных запросов.
Для включения этого журнала нужно:
- В MySQL 5.1.29 и более поздних версиях нужно задать переменной slow_query_log значение 1. Для выключения журнала нужно задать значение 0.
- В более ранних версиях MySQL нужно выполнить log-slow-queries = /var/db/mysql/slow_queries.log (путь к файлу нужно заменить на свой).
Также нужно задать еще один важный параметр — это long_query_time. Все запросы, которые будут выполняться медленнее указанного в нем значения, будут записываться в журнал медленных запросов.
Для того чтобы понять, которые из запросов нужно оптимизировать, вы можете просмотреть этот журнал вручную или же использовать дополнительные или встроенные утилиты, например, Mysqldumpslow.
У вас нет необходимых навыков или знаний для того, чтобы самостоятельно заниматься оптимизацией сайта на хостинге RigWEB? Вы можете обратиться за помощью к нашим специалистам! Сотрудники техподдержки в течение 30 минут ответят на любые ваши вопросы в рамках своей компетенции. Не стесняйтесь задавать вопросы, особенно если вам предстоит MySQL-оптимизация больших таблиц.
Когда Ваша база MySQL заметно вырастит, потребуется физический сервер. Выделенные сервера купить можно у нас по акции с администрированием. Мы перенесем и оптимизируем Вашу базу данных бесплатно.
В том же случае, когда у вас нет возможности самостоятельно заниматься переносом веб-ресурса с другого хостинга на наш и выполнять сопутствующую оптимизацию — наши специалисты сделают это за вас совершенно бесплатно. Пользуйтесь профессиональным хостингом, ведь только так вы сможете без проблем работать над сложными и масштабными проектами и получать от этого удовольствие!