Ускорение работы баз MySQL

Статус
В этой теме нельзя размещать новые ответы.

kikabidze

Мастер
Регистрация
18 Авг 2010
Сообщения
289
Реакции
30
Во всех базах данных с которыми приходилось работать, периодически нужно было делать бекап-рестор/переиндексацию для улучшения работы. Особенно такую профилактику было полезно делать в больших базах, где данные периодически удалялись-добавлялись.
Как обстоят дела с MySQL? Нужно ли проводить такую профилактику, какие есть средства для этого?
Пробежался по форуму и Гуглу и к удивлению рекомендаций по этой теме не нашел, раньше думал что такая профилактика актуальна для всех типов баз данных...
 
Периодический OPTIMIZE TABLE `table_name`
Это типа дефрагментация данных, упорядочивание. А кроме этого больше ничего нет. Для скорости разве что таблички уменьшать до данных с цифрами и поля делать не int(11), например, а smallint(6) (по требованиям). В общем да подскажет
Код:
SELECT *
FROM `table_name`
PROCEDURE ANALYSE ( )
 
Во время OPTIMIZE TABLE `table_name` сайт становится недоступным? Кто-нибудь пробовал сравнивать на больших базах OPTIMIZE и бекап-рестор? После этих процедур размер базы был одинаков или какая-то из них эффективней? Стоит ли вешать OPTIMIZE TABLE на крон?
 
Во время OPTIMIZE TABLE `table_name` сайт становится недоступным?
Не сайт, только табличка блочится. На большой таблице будет очень долго оптимизироваться. Но и смысл выполнения данной команды есть тогда, когда много фрагментированных данных (дырок/пробелов после удаления строк).
и бекап-рестор
Я правда не понимаю при чем тут бекап-рестор, речь ведь не о резервном копировании/восстановлении таблиц, а именно об оптимизации?! Или я что-то не так понял?
размер базы был одинаков или какая-то из них эффективней?
Конкретных испытаний не проводил, но и так ясно, что размер значительно не измениться.
вешать OPTIMIZE TABLE на крон
Вполне, ночью например его делать.
 
Я правда не понимаю при чем тут бекап-рестор, речь ведь не о резервном копировании/восстановлении таблиц, а именно об оптимизации?! Или я что-то не так понял?
Конкретных испытаний не проводил, но и так ясно, что размер значительно не измениться.
Не знаю как в MySQL, но в других базах бекап-рестор нужен не только для резервного копирования, но и для переиндексации и чистки таблиц от мусора. Возможно OPTIMIZE делает то-же самое, а может и нет, вот хотелось бы выяснить :) Жаль, под рукой нет большой базы чтобы по-тестить...
Например, в firebird/interbase бекап-рестор приводил к значительному (в разы) сокращению объема базы и ускорению работы (естественно, если таблицах до этого было много изменений).
 
Сокращение будет, если не стоит автокоммит и база используется InnoDB, т.е. записи не удаляются, а только помечаются на удаление, на сколько я понимаю.
Оптимайз делает только дефрагментацию таблицы.
 
Кроме OPTIMIZE & ANALIZE tabl есть еще команда FLUSH для очистки систeмного кеша, логов и прочего. На задёргнанной базе тоже не плохо помогает.
 
Везде где используешь группировку или сортировку - желательно установить индексы на группируемые поля
 
Я пробовал команды OPTIMIZE и ANALIZE для базы в 10Гб, правда база была вновь созданная, удалений и изменений внутри не было. Соответственно улучшений не было заметно.
А вообще много зависит от выбора типа БД - InnoDB, MYISAM и т.д.
 
на сколько я знаю MySQL сама периодически делает дефрагментацию.
а что касается уменьшения в размере так она после удаления записи например со средины таблицы, новую созданную запись пометит на место удаленной с новым индексом (если он есть и установлен автоинкремент).
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху