Причины нагрузки на сервер баз данных Mysql
Если Вы используете базу данных для своего сайта, то рано или поздно обязательно столкнётесь с проблемой нагрузки на сервер со стороны Вашей базы данных.
Первое время возможно Вы не будете испытывать подобных проблем, однако как только размер Вашей базы данных возрастёт, а количество её таблиц увеличится в несколько раз, Вам нужно будет регулярно анализировать работу базы данных.
Многие говорят, что если сайт использует надёжную CMS систему, то в таком случае работать с базами данных одно удовольствие и работа баз продумана до мельчайших подробностей. Это так, однако это не может гарантировать отсутствие нагрузки со стороны БД на сервере.
Есть 2 способа решения данной проблемы: самостоятельное и с помощью разработчика сайта.
Какой бы надёжной ни была структура базы данных, со временем она начнет создавать нагрузку на Ваш сервер. Причиной может быть накопление большего количества ненужного материала в базах данных, также невыполнение регулярной оптимизации базы, под которой подразумевается возобновление таблиц, дефрагментация, обновление статистики и сортировка индексов.
Если у Вас есть желание и навыки работы с базами данных, можете попробовать сначала самостоятельно оптимизировать запросы и таблицы для Вашей базы.
Для начала нужно получить полную статистику по процессам Вашей бд .Такую информацию можно получить от технической поддержки, либо самостоятельно,имея root доступ к серверу.
Быстрее всего информацию по процессам для базы данных на сервере можно получить с помощью панели управления WHM
и функции MySQL Process List.
Также такую информацию можно получить, подключившись к серверу по SSH, используя команду mysqladmin proc stat
( опять же если у вас root доступ к серверу) :
mysqladmin proc stat
+-------+-----------------+-----------+--------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-------+-----------------+-----------+--------------------+----------------+------+--------------------+------------------------------------------------------------------------------------------------------+
| 44327 | eximstats | localhost | eximstats | Sleep | 0 | | |
| 44639 | DELAYED | localhost | eximstats | Delayed insert | 0 | Waiting for INSERT | |
| 44643 | burzhuy_burzhuy | localhost | burzhuy_burzhuy | Query | 0 | Sending data | SELECT * FROM ext_releases where label='Elux Records' order by id desc LIMIT 0,30 |
| 44644 | vseprovs_pasha | localhost | vseprovs_wordpress | Sleep | 0 | | |
| 44646 | ilta_user | localhost | ilta_ilta | Query | 0 | Sorting result | SELECT * FROM pages WHERE parent='1178' AND enable_ru=1 AND type!='13' AND type!='26' AND type!='39' |
| 44647 | ilta_user | localhost | ilta_ilta | Query | 0 | Sorting result | SELECT * FROM pages WHERE parent='1187' AND enable_ru=1 AND type!='13' AND type!='26' AND type!='39' |
| 44648 | root | localhost | | Query | 0 | | show processlist |
+-------+-----------------+-----------+--------------------+----------------+------+--------------------+-----------------------------------------------------
Более полную статистику по запросам к базе данных сайта также можно подучить с помощью PHPMYADMIN:
После получения детальной информации по процессам базы , можно приступить к оптимизации самой базы данных сайта.
Проверку и оптимизацию таблиц базы данных можно выполнить через панель управления cPanel c помощью опций Check DB, Repair DB.
Сначала выполняем проверку базы данных и если всё нормально, переходим к самой оптимизации.
После запуска и завершения процесса оптимизации и восстановления повреждённых таблиц базы данных, мы можем увидеть, что процесс завершился успешно, однако в нашем случае одна из таблиц базы данных всё таки не оптимизировалась. Это мы увидели благодаря сообщению: note : The storage engine for the table doesn't support repair
Оптимизировать базу данных также можно через SSH c помощью запуска команды mysqlcheck --repair --analyze --optimize --auto-repair db_name
Появление ОК напротив таблицы базы данных показывает, что оптимизация таблицы прошла успешно ( например, lovingst_imedicaldirectory.idx_default_field OK), появление Table is already up to date показывает, что таблица БД не нуждается в оптимизации так как уже оптимизирована.
Подобные оптимизации желательно делать несколько раз в месяц.
Если у вас собственная , специально разработанная под нужды Вашего сайта структура базы данных, тогда Вам необходимо оптимизировать сами запросы Mysql базы данных.
Если же и после оптимизации нагрузка не будет снижена, то, вероятно, вы исчерпали возможности Вашего хостинга и Вам нужно
переходить на более мощный тарифный план.