flush tables в MySQL позволяет закрыть все неиспользуемые таблицы и принудительно закрыть все используемые.
Также команда сбрасывает кэш запросов, это может быть нужно когда сервер баз данных создает высокую нагрузку, например вследствие ddos атаки на сервер. Когда причина устранена закрытие таблиц позволяет нормализовать работу MySQL.
Дефрагментация кэша MySQL и закрытие файловых дескрипторов flush tables
Команда позволяет закрыть неиспользуемые файловые дескрипторы, выполнять её можно в консоли MySQL или с помощью утилиты mysqladmin подключившись к серверу по ssh
mysqladmin flush-tables
При закрытии таблиц освобождается память, нагрузка на сервере становится ниже.
Затем дефрагментируем кэш
mysqladmin flush query cache
Последняя команда в версиях MySQL 5.7+ не используется.
И перезапускаем сервер баз данных, потом убеждаемся в том, что служба запустилась и ошибок нет.
systemctl restart mysql
Пример выполнения команд приведен на скриншоте:
В случае если mysqladmin не использовать:
mysql
flush tables;
Query OK, 0 rows affected (0,00 sec)
Пример приведен на скриншоте.
При авторизации в MySQL может потребоваться ввести пароль. Он не запрашивается если пароль пустой или пароль указан в файле /root/.my.cnf на сервере.
Чтобы собирать информацию об SQL запросах, которые выполняются дольше определенного количества секунд, нужно активировать лог медленных запросов, который периодически проверять и запросы, которые попадают в лог оптимизировать.
Также всегда стоит учитывать, что работа MySQL очень сильно зависит от сервера, на котором он используется, от количества выделенных ресурсов (прежде всего, оперативной памяти). В реальных проектах нужна тонкая настройка под существующие условия.