MySQL имеет команду OPTIMIZE TABLE, которая может использоваться для освобождения неиспользуемого пространства при установке MySQL. Есть ли способ (встроенная команда или обычная хранимая процедура), чтобы запустить эту оптимизацию для каждой таблицы в базе данных и / или при установке сервера, или это то, что вам нужно было бы написать самому?
245
OPTIMIZE TABLE
был полезен для MyISAM. Теперь, когда этот движок уходит, необходимостьOPTIMIZE TABLE
уходит, особенно необходимость периодически оптимизировать все таблицы.Ответы:
Вы можете использовать
mysqlcheck
для этого в командной строке.Одна база данных:
Все базы данных:
источник
mysqlcheck -u [username] -p[password] -o [database name]
OPTIMIZE TABLE
команду: dev.mysql.com/doc/refman/5.5/en/optimize-table.html . Например, оптимизируйте одну таблицу следующим образом:OPTIMIZE TABLE <your_schema>.<your_table>;
оптимизируйте все таблицы в данной схеме следующим образом:select concat('OPTIMIZE NO_WRITE_TO_BINLOG TABLE ',table_schema,'.',table_name,';') into outfile '/tmp/optimize_all_tables.sql' from information_schema.tables where table_schema = 'pabeta' and table_type = 'base table'; source /tmp/optimize_all_tables.sql;
Я сделал этот «простой» скрипт:
Чтобы запустить его, просто вставьте его в любую SQL IDE, подключенную к вашей базе данных.
Обратите внимание: этот код не будет работать на phpmyadmin.
Как это устроено
Он запускает
show tables
оператор и сохраняет его в подготовленном операторе. Затем он запускаетoptimize table
в выбранном наборе.Вы можете контролировать, какие таблицы оптимизировать, установив другое значение в переменной
@tables_like
(например:)set @tables_like = '%test%';
.источник
bd
из @b Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'NULL' в строке 1Следующий пример php-скрипта может помочь вам оптимизировать все таблицы в вашей базе данных.
источник
Выполните все необходимые процедуры для исправления всех таблиц во всех базах данных с помощью простого сценария оболочки:
источник
для всех баз данных:
Для одной оптимизации базы данных:
источник
mysqlcheck -Aos
не требует пользователя + пароль.Из phpMyAdmin и других источников вы можете использовать:
Затем вы можете скопировать и вставить результат в новый запрос или выполнить его из собственного источника. Если вы не видите всего утверждения:
источник
Если вы хотите проанализировать, исправить и оптимизировать все таблицы во всех базах данных на сервере MySQL, вы можете сделать это за один раз из командной строки. Для этого вам понадобится root.
После того, как вы запустите это, вам будет предложено ввести пароль root для MySQL. После этого он запустится, и вы увидите результаты, как это происходит.
Пример вывода:
Если вы не знаете пароль root и используете WHM, вы можете изменить его изнутри WHM, выбрав: Home> SQL Services> MySQL Root Password
источник
Из командной строки:
затем введите пароль
источник
Вы можете оптимизировать / проверить и восстановить все таблицы базы данных, используя клиент MySQL.
Во-первых, вы должны получить список всех таблиц, разделенных символом ',':
Теперь, когда у вас есть все таблицы для оптимизации:
источник
MySQL Administrator
(Часть инструментов MySQL GUI) может сделать это для вас на уровне базы данных.Просто выберите вашу схему и нажмите
Maintenance
кнопку в правом нижнем углу.Так как инструменты GUI достигли состояния конца срока службы, их трудно найти на странице mysql. Нашел их через Google: http://dev.mysql.com/downloads/gui-tools/5.0.html
Я не знаю, может ли новый MySQL Workbench сделать это тоже.
И вы можете использовать
mysqlcheck
инструмент командной строки, который должен быть в состоянии сделать это тоже.источник
Если вы обращаетесь к базе данных напрямую, вы можете написать следующий запрос:
источник
Этот скрипт bash примет пароль root в качестве опции и оптимизирует его один за другим с выводом статуса:
источник
Скрипт стартового bash, чтобы вывести список и запустить инструмент для работы с БД ...
источник
мои 2цента: начать с таблицы с наибольшей фрагментацией
источник