MySQL: Optimize Table
Написал я как-то скрипт, который работал с базой данных. Первые 40 тысяч строк он вставил без проблем, однако последующие 20 тысяч были уже тяжеловаты для моего компа. Скрипт вставлял в базу данных данные каждые 30 секунд. В это время стала сильно увеличиваться загрузка процессора службой mysql, а также жесткий диск начинал шуршать на протяжении 10 секунд.
Повезло, что краем уха слышал о команде optimize table. Поэтому в оболочке phpmyadmin зашел в проблемную базу данных и ввел:
optimize table название_таблицы
Процесс оптимизации занял около 40 секунд, мой скрипт работы не прервал и успешно завершил свою работу через пару часиков.
Команда optimize table восстанавливает таблицу, если есть разделенные или удаленные строки, сортирует индексы.
Команда optimize table позволяет повысить скорость работы базы данных только если в ней содержится огромное кол-во данных. Применение optimize table на базах данных с малым количеством данных никакого эффекта не даст.
Если говорить о вордпресс, то эта команда содержится в таких плагинах как akismet (оптимизирует таблицу комментариев) и wp-tuner (следит за общей производительностью wordpress).
Популярность: 18%
Также почитайте эти записи:
- Останавливаем запрос MySql (1)
- Оптимизировать все таблицы во всех бд MySql (0)
- Мини заметка. Mysql, отключаем внутреннее кэширование (0)
7 комментариев
Оставить комментарий
Поиск по сайту
Облаго тегов
Партнеры
Популярные статьи
- Программы для работы с веб- камерами
- Как узнать mac адрес сетевой карты удаленно
- Чтение ext4 разделов в Windows
- Как обжать кабель
- Основные сочетания клавиш Windows XP
- Доступ к виртуальной машине из интернета. Осваиваем port mapping в vmware
- MySQL: Optimize Table
- Ubuntu. Как узнать размер папок в директории?
- Скрипт для проверки индексации сайтов
- WinXp. Закрываем скрытые шары
Спасибо заюзаю у себя
Для MyISAM спасет такое:
ALTER TABLE table_name DISABLE KEYS;
...
INSERTs go here...
...
ALTER TABLE table_name ENABLE KEYS;
А вообще имеет смысл делать bulk insert — у него производительность гораздо выше:
INSERT INTO table (...) VALUES (...), (...), (...);
Главное здесь не превысить max_packet_size.
А вы не в курсе что означает крайняя правая колонка в phpmyadmin — «Overhead»?
У меня она совсем не пустая :(
Нужно ли (и безопасно ли) запускать Optimize в данном случае?
Optimize table как раз и нужен, для того, чтобы уменьшить overhead. Overhead — лишнее дисковое пространство, появляющееся после удаления или изменения данных в таблице.
При помощи команды optimize table мы удаляем его, благодаря чему, при выполнении запросов, ненужные данные в overhead просматриваться не будут, и скорость выполения запросов будет выше.
Is it possible to contact administration?
By the way, anybody home?!
Сейчас на агенство недвижимости работаем — та же самая байда — сайты оптимизируем, база объектов большая
Ну вы имеете в виду базу Мускл? Ну да. хотя такие простенькие сайты. как пластиковые окна и прочие визитки могут и вовсе без БД обходиться — и материала немного и посещалка не очень)