У нас есть сервер, на котором работает наше веб-приложение на основе PHP / MySQL, которое работает МЕДЛЕННО.
Мой предшественник говорит:
Раньше мы выполняли обслуживание базы данных, которое использовалось для очистки буфера, кешированных и нежелательных переменных.
И мне интересно, что он имеет в виду этим заявлением? Имеется в виду простая оптимизация таблиц? Или кеш запросов? Я понимаю MySQL, но не знаю, что он описывает.
Буду признателен за любые указатели.
Меня передергивает идея обслуживания базы данных, включающая очистку буфера для увеличения скорости. Если ваша система сканирует, и это ответ, я скептически отношусь к тому, что все было сделано правильно.
Правильный способ подойти к этому - выяснить, какое у вас горлышко бутылки. Обычно это либо диск (часто расширение недостаточного выделения памяти), либо ЦП.
Какая нагрузка на вашу базу данных? Следует ли вам использовать таблицы InnoDB, если нет? Написаны ли запросы качественно?
«Как настроить сервер MySQL под нагрузкой» - это большой сборник информации. Начните с предположения, что все не так, и подумайте о том, чтобы посторонний человек потратил час или два на это за вас.
Если бы их операции по обслуживанию выполнялись на работающем сервере, я могу думать только о «очистке таблицы» (из руководства MySQL: закрывает все открытые таблицы, принудительно закрывает все используемые таблицы и очищает кеш запросов. FLUSH TABLES также удаляет все результаты запросов из кеша запросов).
Но может они просто перезагружали сервер ...
Для «медленной» части, предполагая, что вы используете систему unix, вы можете попробовать использовать MySQL-настройка-праймер или mysqltuner.pl чтобы иметь представление о том, что вы можете изменить в конфигурации своего сервера
Вот еще что нужно учитывать:
Если большинство таблиц - это InnoDB, вы можете рассмотреть возможность установки следующего в /etc/my.cnf:
[mysqld]
innodb_max_dirty_pages_pct=0;
В MySQL 5.1 и более ранних версиях значение по умолчанию - 90;
В MySQL 5.5 значение по умолчанию - 75;
Установка innodb_max_dirty_pages_pct в ноль (0) сохраняет страницы данных InnoDB максимально сброшенными на диск (до 99,1%) из пула буферов innodb.
Без дополнительных настроек это также обеспечивает более быстрое завершение работы mysqld при наличии большого количества данных InnoDB, поскольку mysqld очищает пул буферов innodb при завершении работы.
Фактически вы можете установить это на лету без перезапуска mysql:
mysql> SET GLOBAL innodb_max_dirty_pages_pct=0;