Головна > База знань > Безпека > Причины нагрузки на сервер баз данных Mysql

Причины нагрузки на сервер баз данных Mysql

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

 

 

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

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

 


Також прочитайте