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%


Также почитайте эти записи:

Получать новые статьи:

7 комментариев

  1. Спасибо заюзаю у себя

  2. Для 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.

  3. А вы не в курсе что означает крайняя правая колонка в phpmyadmin — «Overhead»?

    У меня она совсем не пустая :(

    Нужно ли (и безопасно ли) запускать Optimize в данном случае?

    1. Optimize table как раз и нужен, для того, чтобы уменьшить overhead. Overhead — лишнее дисковое пространство, появляющееся после удаления или изменения данных в таблице.

      При помощи команды optimize table мы удаляем его, благодаря чему, при выполнении запросов, ненужные данные в overhead просматриваться не будут, и скорость выполения запросов будет выше.

  4. Is it possible to contact administration?

    By the way, anybody home?!

  5. Сейчас на агенство недвижимости работаем — та же самая байда — сайты оптимизируем, база объектов большая

  6. Ну вы имеете в виду базу Мускл? Ну да. хотя такие простенькие сайты. как пластиковые окна и прочие визитки могут и вовсе без БД обходиться — и материала немного и посещалка не очень)

Оставить комментарий



Подписка на блог

Подпишись на обновление блога по RSS блога
Число подписчиков: 123

Поиск по сайту

Партнеры

Реклама

Партнеры