Подчищаем таблицу опций
Воскресенье, 19 августа 2007 г.
Просмотров: 1054
Подписаться на комментарии по RSS
В WordPress'е есть один не очень хорошо продуманный момент, который создает бессмысленную нагрузку на сервер. Суть проблемы в том, что таблица опций используется не только для хранения опций, но и для rss-записей, полученных скажем с официальной Планеты WordPress и других данных. С точки зрения базы данных, размер таблицы не так и велик (у меня 750Кб в дампе), во всяком случае для MySQL это ерунда. Но есть один момент, который явно влияет на производительность WordPress.
Дело в том, что в таблице хранятся данные не только существующих плагинов, но и тех, который были однажды активированы. При создании опций можно указать один из параметров «autoload». Но по-умолчанию стоит в true. Это означает, что при каждой загрузке WordPress будет считывать и те опции, которые ему в общем-то не нужны.
Усугубляет ситуацию еще и то, что все опции кэшируются, то есть выносятся в отдельный файл, который и считывается вместо обращения к БД. Когда файл маленький (до 100Кб), проблем нет, но размер опций на деле оказывается гораздо больше, например у меня он получается 500Кб. Понятно, что кэш хоть и снимает нагрузку с БД, но увеличивает нагрузку на файловую систему.
Чтобы оценить размеры файла опций, зайдите в каталог wp-content/cache/цифры-буквы/options. Максимальный по размеру файл это и есть кэш опций.
Понятно, что было бы неплохо подчистить опции, удалив старые и ненужные. К сожалению я не знаю какого-то автоматического способа, поэтому я расскажу как это сделать вручную. Из-за этого сразу предупреждаю, что способ годится только для тех, кто умеет работать с phpMyAdmin и не теряется от предложения сделать (и восстановить) дамп таблицы. Так, что если вам что-то не понятно в этой статье, значит она не для вас.
Итак, приступим.
Первым делом открываем phpMyAdmin и переключаемся на обзор таблицы wp-options. Сразу делаем бэкап таблицы на свой компьютер.
Строк в этой таблице много, но начать можно с опций rss-агрегатора. Все они начинаются с «rss_». Для создания такой выборки нажимаем ссылку SQL и вводим запрос:
- SELECT *
- FROM 'wp_options'
- WHERE option_name LIKE 'rss_%'
- LIMIT 0 , 30
и получаем нужный нам список. Обратите внимание, что нам нужны опции, начинающиеся с «rss_набор цифр и букв». Осмысленные названия, типа «rss_excerpt_length» трогать нельзя.
Отмечаем лишние опции и внизу выбираем «Удалить отмеченные». После предупреждения соглашаемся (кнопка «Да»).
Теперь делаем еще один дамп таблицы (старый не удаляем!) - с его помощью мы попробуем найти те опции, которые нам не нужны. Сразу же обращаем внимание на изменение размера дампа. Например у меня он сократился на 200Кб.
Открываем последний дамп текстовым редактором, например Notepad2 (он хорошо подсвечивает строки) и пролистываем его. Наша задача найти «большие» опции - те которые занимают много строк.
Если опция большая, то смотрим на её название и если ясно, что она относится к плагину, который уже не используется, то удаляем её. Например я нашел старый «gravatar» (плагин граватарок) и «tantan_ga» (гугловская аналитика). У вас, скорее всего будет что-то другое.
Опять делаем дамп таблицы и смотрим размер. У меня он стал чуть меньше 40Кб. То есть я добился почти 20-кратного уменьшения размера таблицы. После обновления кэша файл опций стал 14Кб (был 500Кб). Хороший результат. ![]()
Теперь о возможных проблемах.
1. Если вы удалили нужную опцию, то просто восстановите предыдущий дамп. Я бы вообще рекомендовал делать дампы на каждом этапе и каждый раз проверять работоспособность блога. Если же вы не знаете, что это за опция, то лучше её не трогайте. В случае, если вы удалили настройки какого-то плагина, то можно просто его деактивировать/активировать - плагин сам создаст нужные.
2. Если у вас кэш не обновляется. Стандартно кэш обновляется раз в 15 минут, поэтому попробуйте просто подождать. Если же это не помогло, то нужно вручную удалить каталог кэша. Скорее всего по FTP это сделать не получится, поэтому вам нужно войти в панель управления сайта (не WordPress!) и выбрать «Файл-менеджер». Дальше просто удаляем каталог кэша в корзину (и очищаем её). После этого через FTP снова создаем /cache/ и выставляем на него права для записи 777.
3. Что касается RSS-сборщика, то через какое-то время в таблице опять появятся данные. На самом деле это не так страшно, поскольку эти опции не загружаются автоматически (autoload = false).

Комментариев: 30
У меня вообще каталога wp-content/cache нет! что бы это значило... :neutral:
Помниться года 2 назад (когда ещё был блог на WP) взял себе за правило после теста какого-нить плагина подчищать сразу базу (благо ничего сложного - главное нужный префикс найти), а вот про rss_ что-то не подумал, спасибо за инфу
Давно волновал вопрос оптимизации размера БД, в частности удаления из нее rss-записей с планеты Вордпресс.
Поэтому спасибо, Максим!
у меня папка кеш пустая и без прав 777.
И вордпресс мне ничего не говорит и опции в настройках я что-то по-поводу кеширования не встречал...
2DARKMAN:
И в wp-config.php где-то на 22-23 строчке не предупреждали?)
Хотя я, признаться, тоже почему-то быстро забыл об этом, хоть и видел :smile:
а у меня всё как обычно
Был 473 кб, после удаления RSS стал 99 кб. После остальных очисток 93, дальше страшно удалять ) спасибо, Максим!
причём здесь он? я туда даже не заглядывал и не должен.
там всего 22 строчки
) где ты 23 нашел не знаю
Только вчера чистил эту таблицу :mrgreen: а тут блин статья появилась... не поверите но у меня она весила 2,300 килобайт, почистил теперь 200 килобайт... блог прям ожил :mrgreen:
2DARKMAN
Дядечка чужой чтоли ставил блог?
Skop
когда ставишь вордпресс, то заглядывать в конфиг разве надо? Я уже не помню. МОжет забыл уже, если туда надо вводить данные по базе.
ок, проехали.
объясните тогда, почему у меня папка кеш пустая и где это управляется и при каких условиях. Спасибо.
Написал ответ, и, блин, как обычно отправил забыв вписать код "только нижние". Кликаешь назад, а ничего нету)
Кстати не первый раз, поэтому желание комментировать начисто отпадает
Поэтому отвечу кратенько этот раз - смотрите тут
Ок, спасибо. А стоит ли его вообще включать?:
з.ы.: по-поводу комментариев, в опере все ок с этим.
так и не понял смысла большого чистки: почистил я кучу строк, удалил много этих РСС_с_буква-цифрами и после первого захода в админку снова эти РСС загружаются (блог разработчиков вордпресса) и снова таблица с 250кб до 500кб увеличивается
У тебя наверное очень молодой блог.
Я сталкиваюсь с тем, что в базе остаются старые rss_, которые по-идее должны заменяться на новые. Ну и плюс не забывай про мусор от плагинов.
блогу 8мес
взял сейчас открыл в phpmyadmin строку эту с "планеты вордпресс" и просто очистил ее содержимое а саму запись оставил. теперь не грузится
вопрос как ее вообще убрать этот блог оттуда в админке. мне он как то сто лет не нужен
упс. пока писал все такие загрузилось снова :( правда не сразу
Отключить можно в файле index.php в wp-admin. Вверху есть js-скрипт, можно его закомментировать. Я правда не пробовал, но должно сработать.
удалил и новости разработчиков и "планету"/ оставил только входящие ссылки. таблица больше не растет но и шустрее шевелитьcя вроде не стало. как было так и осталось все. но глаза теперь не раздражает эта груда ячеек
кстати если кому интересно что осталось в файлах после вырезания:
ссылки на текстовые файлы
index
index-extra
сорри вторая ссылка кривая. (копи-пасте не рулит)
правильная http://lecactus.ru/images/_index-extra.txt
"эти РСС загружаются (блог разработчиков вордпресса) и снова таблица с 250кб до 500кб увеличивается"
я вобще открываю шаблон админки и удаляю оттуда всё, что импортируется, я при заходе в админку грузится быстрее, и ничего не лишнего нету
Зачем делать это вручную? Есть же специальный плагин - Dashboard Lite.
Dimox, плагином ты добавляешь нагрузку на сервер, а так удалил всего две строки в файле wp-admin/index.php
и всё. Привыкли всё плагинами :???:
Максим, я в предыдущем комменте, в теге code написал
, а оно исчезло...
Что ж такое, не пишутся дивы..
Эта нагрузка никоим образом не заметна, поэтому не стоит только лишь от осознания ее возможности, отказываться от этого удобства.
А чтобы вывести любой тег в комментарии, например, див, нужно написать так:
<div>Не буду ничего выводить :neutral: тебя всё равно не переубедить!
Ага, верно, не переубедить ))))
Hичего и не надо выводить, тем более, что этот код я видел в письме с комментом.
А о том, как выводить, я написал лишь для сведения, на будущее ;).
У меня в этой папке пусто. Не наполняется содержимым. Возможно, блог ещё молод, хотя не знаю, вряд ли это является причиной.
Для версии 2.5 эта статья актуальна ?