База знаний:
Причины нагрузки на сервер баз данных Mysql
Автор Дмитро Резнiченко, Last modified by Дмитро Резнiченко на 27 January 2014 13:46 PM

Причины нагрузки на сервер баз данных 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  базы данных.

 

 

Если же и после оптимизации нагрузка не будет снижена, то, вероятно, вы исчерпали возможности Вашего хостинга и Вам нужно

переходить на более мощный тарифный план.

 

(11 голос(а))
Эта статья полезна
Эта статья бесполезна