Занятная статистика по форуму Дизель )
Самые первые: пользователь, предупреждение, темы, блоги, галерея:
http://blogger.kg/blog/180.html
Самые первые: пользователь, предупреждение, темы, блоги, галерея:
http://blogger.kg/blog/180.html
Таблица имеет почти 16 тысяч строк. Надо её почистить от старых записей:
mysql> delete from log where id < 188595088;
Query OK, 8798074 rows affected (33 min 35.91 sec)
При этом база была в работе и в таблицу данные поступали без видимых проблем.
Я уже как-то проводил оптимизацию нескольких MySQL-таблиц, для сведения замерял время и объёмы и размещал эти замеры здесь.
Похоже понадобилась оптимизация ещё одной таблицы — стал замечать медленный запрос, которого раньше даже видно не было. Ничего особенно не менялось, чтобы вызвать какое-либо замедление выполнения запросов. Таблица на момент написания этой заметки содержала 1659783 записей, объём IBD-файла составлял почти 2 ГБ (2000683008 Б). Таблица содержит тексты личных сообщений пользователей форума, так что записи в ней часто удаляются и добавляются, так что оптимизация не помешает.
Команда «optimize table» выполнялась 5 минут 28 секунд и размер файла уменьшился до 1,4 ГБ (1488977920 Б).
Посмотрим, изменит ли это ситуацию с медленным запросом.
Попутно решил оттимизировать и несколько других таблиц.
2060421 строк, файл в 400МБ обработан за 1 минуту 54 секунда, размер файла стал 310 МБ.
434582 строк, файл в 330МБ обработан за 37 секунд, размер файла уменьшился мало — до 315 МБ.
Показателен файл таблицы с неким кэшем движка — 1588 строк, объём файла 1,9 ГБ — оптимизация длилась меньше 1 секунды и размер файла стал 10 МБ.
Правда купил я его уже давно — 10.06.2010 — но из-за серьёзных событий в стране никак не доходили руки написать свой обор. Хватило только на краткий обзорчик «Свершилось наконец-то — купил я себе новый коммуникатор )», который был написан 29 июня 2010 г. Вот его я и дублирую здесь, всё-таки тут у меня домашняя страница )
(продолжение…)
Я не такой уж и большой специалист по MySQL, так что приведённые далее наблюдения прошу не считать показательными — это просто мои эксперименты на моём сервере и с моей БД )
Озаботился проблемой разрастания таблиц в БД. Надо их дефрагментировать. Таблицы в InnoDB. Провёл пару замеров с одной из самых больших таблицей под рукой — log:
— больше 3 миллионов записей;
— размер файла log.ibd — 3,5ГБ;
Для начала мне нужно было заменить значение одного из полей таблицы:
mysql> update log set tip='no data';
До замены в этом поле была довольно длинная строка с информацией user-agent, полученной от браузеров, посетителей, т.е. новая строка в несколько раз короче старой.
Результаты:
Query OK, 3033596 rows affected (57 min 56.91 sec)
Rows matched: 3239214 Changed: 3033596 Warnings: 0
Размер файла заметно увеличился — 4ГБ. Очевидно надо дефрагментировать таблицу (это был плавный переход к следующему тесту)))
Второй тест — оптимизация таблицы:
mysql> optimize table log;
Результаты:
mydb.log | optimize | note | Table does not support optimize, doing recreate + analyze instead
mydb.log | optimize | status | OK
2 rows in set (38 min 47.55 sec)
Размер файла существенно уменьшился — 2,7ГБ, а было ведь 4ГБ!
Напрашивается вывод о том, что оптимизацию надо проводить почаще, но тут надо учитывать, что во время оптимизации таблица будет заблокирована и недоступна для ваших скриптов.
Для полноты картины конечно не обойтись без информации о сервере — старенькая рабочая станция:
— софт — FreeBSD 7.2, apache 2, php, MySQL;
— Intel Pentium4 3.40GHz;
— RAM 3GB;
— система и БД лежат на двух разных винтах;
— сервер, фактически, выделенный;
Следующим будет оптимизация боевого, сильнонагруженного сервера, с кучей больших таблиц, общим размеров гигов под 10. Результаты сообщу дополнительно. Вот только надо выбрать время и заявить ТО на пару часов )
Дополнение от 03-08-2010
Добавление индекса к база размером более 4ГБ и с более 4 с половиной мульёна строк заняло 18 минут полного отказа СУБД от обслуживания:
mysql> alter table log add index (id_site);
Query OK, 4784444 rows affected (18 min 49.74 sec)
Records: 4784444 Duplicates: 0 Warnings: 0
Последние комментарии:
Powered by WordPress (28 queries. 0,213 seconds)