Причини навантаження на сервер баз даних 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 does not support repair
Оптимізувати базу даних також можна через SSH за допомогою запуску команди mysqlcheck --repair --analyze --optimize --auto-repair db_name
Поява ОК проти таблиці бази даних показує, що оптимізація таблиці пройшла успішно (наприклад, lovingst_imedicaldirectory.idx_default_field OK), поява Table is already up to date показує, що таблиця БД не потребує оптимізації так як вже оптимізована.
Подібні оптимізації бажано робити кілька разів на місяць.
Якщо у вас власна, спеціально розроблена під потреби Вашого сайту структура бази даних, тоді Вам необхідно оптимізувати самі запити Mysql бази даних.
Якщо ж і після оптимізації навантаження не буде знижена, то, ймовірно, ви вичерпали можливості Вашого хостингу і Вам потрібно
переходити на більш потужний тарифний план.