Подчищаем таблицу опций

Рубрика: WordPress -> Статьи
Воскресенье, 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 и вводим запрос:

  1.  SELECT *
  2.  FROM 'wp_options'
  3.  WHERE option_name LIKE 'rss_%'
  4.  LIMIT 0 , 30

и получаем нужный нам список. Обратите внимание, что нам нужны опции, начинающиеся с «rss_набор цифр и букв». Осмысленные названия, типа «rss_excerpt_length» трогать нельзя.

Отмечаем лишние опции и внизу выбираем «Удалить отмеченные». После предупреждения соглашаемся (кнопка «Да»).

Теперь делаем еще один дамп таблицы (старый не удаляем!) - с его помощью мы попробуем найти те опции, которые нам не нужны. Сразу же обращаем внимание на изменение размера дампа. Например у меня он сократился на 200Кб.

Открываем последний дамп текстовым редактором, например Notepad2 (он хорошо подсвечивает строки) и пролистываем его. Наша задача найти «большие» опции - те которые занимают много строк.

Если опция большая, то смотрим на её название и если ясно, что она относится к плагину, который уже не используется, то удаляем её. Например я нашел старый «gravatar» (плагин граватарок) и «tantan_ga» (гугловская аналитика). У вас, скорее всего будет что-то другое.

Опять делаем дамп таблицы и смотрим размер. У меня он стал чуть меньше 40Кб. То есть я добился почти 20-кратного уменьшения размера таблицы. После обновления кэша файл опций стал 14Кб (был 500Кб). Хороший результат. smile

Теперь о возможных проблемах.

1. Если вы удалили нужную опцию, то просто восстановите предыдущий дамп. Я бы вообще рекомендовал делать дампы на каждом этапе и каждый раз проверять работоспособность блога. Если же вы не знаете, что это за опция, то лучше её не трогайте. В случае, если вы удалили настройки какого-то плагина, то можно просто его деактивировать/активировать - плагин сам создаст нужные.

2. Если у вас кэш не обновляется. Стандартно кэш обновляется раз в 15 минут, поэтому попробуйте просто подождать. Если же это не помогло, то нужно вручную удалить каталог кэша. Скорее всего по FTP это сделать не получится, поэтому вам нужно войти в панель управления сайта (не WordPress!) и выбрать «Файл-менеджер». Дальше просто удаляем каталог кэша в корзину (и очищаем её). После этого через FTP снова создаем /cache/ и выставляем на него права для записи 777.

3. Что касается RSS-сборщика, то через какое-то время в таблице опять появятся данные. На самом деле это не так страшно, поскольку эти опции не загружаются автоматически (autoload = false).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Комментариев: 30

  1. 2007-08-19 в 13:48:51 | iSynth (анонимно)

    У меня вообще каталога wp-content/cache нет! что бы это значило... :neutral:

  2. 2007-08-19 в 14:07:10 | Skop (анонимно)

    Помниться года 2 назад (когда ещё был блог на WP) взял себе за правило после теста какого-нить плагина подчищать сразу базу (благо ничего сложного - главное нужный префикс найти), а вот про rss_ что-то не подумал, спасибо за инфу

  3. 2007-08-19 в 16:31:38 | Dimox (анонимно)

    Давно волновал вопрос оптимизации размера БД, в частности удаления из нее rss-записей с планеты Вордпресс.

    Поэтому спасибо, Максим!

  4. 2007-08-19 в 20:29:08 | DARKMAN (анонимно)

    у меня папка кеш пустая и без прав 777. smile И вордпресс мне ничего не говорит и опции в настройках я что-то по-поводу кеширования не встречал...

  5. 2007-08-19 в 20:43:32 | Skop (анонимно)

    2DARKMAN:

    И в wp-config.php где-то на 22-23 строчке не предупреждали?)

    Хотя я, признаться, тоже почему-то быстро забыл об этом, хоть и видел :smile:

  6. 2007-08-20 в 00:12:22 | indefendo (анонимно)

    а у меня всё как обычно

  7. 2007-08-20 в 01:21:25 | Maksus (анонимно)

    Был 473 кб, после удаления RSS стал 99 кб. После остальных очисток 93, дальше страшно удалять ) спасибо, Максим!

  8. 2007-08-20 в 01:24:08 | DARKMAN (анонимно)

    причём здесь он? я туда даже не заглядывал и не должен. smile там всего 22 строчки smile) где ты 23 нашел не знаю

  9. 2007-08-20 в 16:52:53 | zar0ku1 (анонимно)

    Только вчера чистил эту таблицу :mrgreen: а тут блин статья появилась... не поверите но у меня она весила 2,300 килобайт, почистил теперь 200 килобайт... блог прям ожил :mrgreen:

  10. 2007-08-20 в 17:06:52 | Skop (анонимно)

    2DARKMAN

    Дядечка чужой чтоли ставил блог?

  11. 2007-08-20 в 19:40:22 | DARKMAN (анонимно)

    Skop

    когда ставишь вордпресс, то заглядывать в конфиг разве надо? Я уже не помню. МОжет забыл уже, если туда надо вводить данные по базе.

    ок, проехали.

    объясните тогда, почему у меня папка кеш пустая и где это управляется и при каких условиях. Спасибо. smile

  12. 2007-08-20 в 20:16:26 | Skop (анонимно)

    Написал ответ, и, блин, как обычно отправил забыв вписать код "только нижние". Кликаешь назад, а ничего нету)

    Кстати не первый раз, поэтому желание комментировать начисто отпадает

    Поэтому отвечу кратенько этот раз - смотрите тут

  13. 2007-08-21 в 00:43:38 | DARKMAN (анонимно)

    Ок, спасибо. А стоит ли его вообще включать?:

    з.ы.: по-поводу комментариев, в опере все ок с этим.

  14. 2007-08-21 в 09:09:24 | Lecactus (анонимно)

    так и не понял смысла большого чистки: почистил я кучу строк, удалил много этих РСС_с_буква-цифрами и после первого захода в админку снова эти РСС загружаются (блог разработчиков вордпресса) и снова таблица с 250кб до 500кб увеличивается

  15. 2007-08-21 в 10:28:25 | Максим (анонимно)

    У тебя наверное очень молодой блог. smile Я сталкиваюсь с тем, что в базе остаются старые rss_, которые по-идее должны заменяться на новые. Ну и плюс не забывай про мусор от плагинов.

  16. 2007-08-21 в 11:22:22 | Lecactus (анонимно)

    блогу 8мес

    взял сейчас открыл в phpmyadmin строку эту с "планеты вордпресс" и просто очистил ее содержимое а саму запись оставил. теперь не грузится smile вопрос как ее вообще убрать этот блог оттуда в админке. мне он как то сто лет не нужен

  17. 2007-08-21 в 11:23:37 | Lecactus (анонимно)

    упс. пока писал все такие загрузилось снова :( правда не сразу

  18. 2007-08-21 в 11:32:24 | Максим (анонимно)

    Отключить можно в файле index.php в wp-admin. Вверху есть js-скрипт, можно его закомментировать. Я правда не пробовал, но должно сработать.

  19. 2007-08-21 в 12:44:41 | Lecactus (анонимно)

    удалил и новости разработчиков и "планету"/ оставил только входящие ссылки. таблица больше не растет но и шустрее шевелитьcя вроде не стало. как было так и осталось все. но глаза теперь не раздражает эта груда ячеек

    кстати если кому интересно что осталось в файлах после вырезания:

    ссылки на текстовые файлы

    index

    index-extra

  20. 2007-08-21 в 12:46:10 | Lecactus (анонимно)

    сорри вторая ссылка кривая. (копи-пасте не рулит)

    правильная http://lecactus.ru/images/_index-extra.txt

  21. 2007-08-21 в 17:55:21 | Maksus (анонимно)

    "эти РСС загружаются (блог разработчиков вордпресса) и снова таблица с 250кб до 500кб увеличивается"

    я вобще открываю шаблон админки и удаляю оттуда всё, что импортируется, я при заходе в админку грузится быстрее, и ничего не лишнего нету

  22. 2007-08-21 в 19:37:54 | Dimox (анонимно)
    я вобще открываю шаблон админки и удаляю оттуда всё, что импортируется,

    Зачем делать это вручную? Есть же специальный плагин - Dashboard Lite.

  23. 2007-08-22 в 03:28:15 | Maksus (анонимно)

    Dimox, плагином ты добавляешь нагрузку на сервер, а так удалил всего две строки в файле wp-admin/index.php

    и всё. Привыкли всё плагинами :???:

  24. 2007-08-22 в 03:30:50 | Maksus (анонимно)

    Максим, я в предыдущем комменте, в теге code написал

    , а оно исчезло... LOL

  25. 2007-08-22 в 03:31:27 | Maksus (анонимно)

    Что ж такое, не пишутся дивы..

  26. 2007-08-22 в 11:43:16 | Dimox (анонимно)
    Dimox, плагином ты добавляешь нагрузку на сервер

    Эта нагрузка никоим образом не заметна, поэтому не стоит только лишь от осознания ее возможности, отказываться от этого удобства.

    А чтобы вывести любой тег в комментарии, например, див, нужно написать так:

    <div>
  27. 2007-08-22 в 15:50:37 | Maksus (анонимно)

    Не буду ничего выводить :neutral: тебя всё равно не переубедить!

  28. 2007-08-22 в 16:25:55 | Dimox (анонимно)

    Ага, верно, не переубедить ))))

    Hичего и не надо выводить, тем более, что этот код я видел в письме с комментом.

    А о том, как выводить, я написал лишь для сведения, на будущее ;).

  29. 2007-08-22 в 19:50:22 | vitaweb (анонимно)

    У меня в этой папке пусто. Не наполняется содержимым. Возможно, блог ещё молод, хотя не знаю, вряд ли это является причиной.

  30. 2008-04-13 в 20:05:30 | Ryoga (анонимно)

    Для версии 2.5 эта статья актуальна ?

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

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)