Очистка и оптимизация базы данных Joomla 3 (Часть - 2). Оптимизация базы данных joomla


Очистка и оптимизация базы данных Joomla 3

Приветствую Вас на страницах сайта Joom4all. Сегодня поговорим о том, как оптимизировать базу данных популярной системы управления контентом Joomla 3.

Все мы знаем (возможно кто-то об этом узнает из этой статьи), что с увеличением размера базы данных растет нагрузка на сервер, кроме того уменьшается доступное дисковое пространство на хостинге. Ну и что скажите Вы, не зря же мы платим деньги за хостинг. Так-то оно так, но стоимость хостинга напрямую зависит от Ваших потребностей и чем выше нагрузка на сайт, тем больше Вам придется за него платить.

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

В результате такая казалась бы незначительная проблема, может привести к серьезным последствиям – уменьшению количества посетителей, объемов продаж, дохода и так далее. Теперь задайте себе вопрос – а оно мне надо?

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

Причины сильного увеличения объема базы данных

То, что со временем база данных Joomla начинает сильно разрастаться это факт, но не всегда резкий скачек размера базы данных связан с увеличением количества материалов. В моей практике было множество случаев, когда количество материалов было неизменным, а база данных увеличивалась на глазах.

В чем кроется причина увеличения размера базы данных? Ну, во-первых это сторонние расширения, при установке которых в базе данных Joomla добавляются новые таблицы и записи. Кроме того существуют расширения которые не «заметают за собой следы» даже после их удаления – расширение удалено, а его таблицы остались в базе данных.

Другая распространенная причина это расширения, которые установлены по умолчанию в Joomla 3. Например, такие расширения как «Умный поиск», а так же версионность материалов (это не совсем расширение). Давайте рассмотрим их более подробно.

История изменений материалов и таблица jos_ucm_history

В Joomla начиная с версии 3.2, разработчики ввели новую возможность – сохранение изменений (версий) статей. Более того данная опция включена в Joomla по умолчанию.

Что дает данная возможность? Если честно, то для большинства пользователей совершенно ничего кроме увеличения объема базы данных. Суть данной функции заключается в том, что Джумла после изменения материала хранит его старые версии, и не просто одну – две, а сразу десять!

Таким образом, получается что, изменив материал 10 раз, мы получим десять его копий, которые сильно увеличивают размер базы данных. А самое неприятное в этой ситуации то, что данные хранятся в формате Json, а это значит что вместо одного символа (или буквы), мы получаем вот такой набор «\u0412». Получается, что каждый символ в материале будет заменен на 6 других, в результате каждая версия материала больше оригинала приблизительно в 6 раз, а их у нас к тому же 10 штук:

Версии материала (история изменений) которые хранятся в формате json и сильно увеличивают размер базы данных

Более подробно про кодировку Json мы поговорим в другой раз, а сейчас главное понять, что одной из главных причин увеличения объема базы данных в Joomla как раз таки является версионность материалов. Что тут можно предпринять? Ну, во-первых сократить количество копий версий материала или же отключить данную опцию вообще. Для этого необходимо перейти на страницу «Настройки менеджера материалов» (нажать на кнопку «Настройки» на странице «Менеджера материалов») и перейти на вкладку «Форма редактирования»:

Для того чтобы Joomla не хранила версии материалов необходимо отключить эту функцию на странице настройки менеджера материалов

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

Но не все так просто, даже если Вы отключите функцию сохранения версий материалов, в базе данных все же останутся ранее созданные версии. Пользы от них в данном случае нет никакой и лучше от них избавиться. Для этого необходимо перейти в phpMyAdmin, найти таблицу jos_ucm_history, в которой хранятся версии изменений материалов, и очистить её (вместо префикса jos может быть любой другой указанный Вами при установке Joomla):

Очистка таблицы jos_ucm_history в Joomla 3.7 для сокращения размера базы данных

Для наглядности на скриншоте выше я показал размер той самой таблицы jos_ucm_history, которая хранит историю изменений, и таблицы с материалами jos_content. Размер этих таблиц отличается более чем в два раза и это при том, что материалов совсем мало и они практически не редактировались.

В заключение хочу отметить, что в некоторых случаях можно сократить размер базы данных Joomla до 95%, достаточно только отключить вышеупомянутую функцию и очистить таблицу jos_ucm_history. Кроме того проверьте таблицы jos_ucm_base и jos_ucm_content (не забывайте про префикс) возможно их тоже придется чистить.

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

joom4all.ru

Очистка и оптимизация базы данных Joomla 3 (Часть

В прошлой статье мы начали обсуждать вопрос как очистить и оптимизировать базу данных Joomla 3. Сегодня продолжим эту обширную тему и поговорим о том, как очистить базу данных от ненужных и неиспользуемых таблиц, которые могут остаться после удаления расширений.

Как удалять расширения и очистить сайт от мусора мы говорили в одной из предыдущих статей. Однако мы не трогали базу данных и не проверяли её на наличие таблиц оставшихся после удаления тех самых расширений.

В рамках данной статьи я не буду рассматривать все возможные расширения и их таблицы, для понимания сути будет вполне достаточно пары примеров. И одним из таких наиболее ярких примеров это стандартное расширение Joomla 3 под названием «Умный поиск», которое способно раздуть базу данных просто до невероятных размеров. Как раз о нем и пойдет речь в данной статье, а попутно поговорим о других расширениях, таблицы или упоминания о которых остаются в базе данных даже после их удаления.

Умный поиск и куча таблиц в базе данных

Как уже было сказано есть в стандартном наборе Joomla такое расширение как «Умный поиск», в состав которого входят плагины, модуль и компонент. Суть его заключается в том, что пользователь при поиске необходимой информации набирает несколько букв искомой фразы, а умный поиск предлагает несколько возможных вариантов тем самым сокращает время, потраченное на поиск.

Все бы хорошо, вещь то вроде полезная, но для функционирования данного расширения требуется предварительная индексация сайта, после чего в базу данных заносится огромное количество ключевых слов. В результате такого подхода со временем накапливается просто невероятное количество записей в таблицах базы данных и её размер просто удивляет. Для того чтобы не быть голословным покажу конкретный пример того как может быть раздута база данных Joomla если Вы начнете использовать умный поиск:

Благодаря "Умному поиску" размер базы данных Joomla 3 увеличился до невероятных размеров

Впечатляет, не так ли? Размер таблицы с материалами составляет 1.6 Мб, а размер таблиц умного поиска таков:

Имя таблицы Размер, Мб
jos_finder_terms 22,6
jos_finder_links_terms* (все возможные таблицы) 9
jos_finder_links 1,6
Прочие (jos_finder_taxonomy, jos_finder_taxonomy_map, jos_finder_tokens и т.д.) 1

В результате совершенно все материалы (которых порядка 40 штук) занимают 1.6 мегабайт пространства, а размер проиндексированных данных для умного поиска превышает 34 мегабайта. Получается, что размер базы данных более чем на 95% состоит из ненужных данных, которыми и пользуются то далеко не все.

Использовать или нет «Умный поиск» дело конечно каждого, но если Вы не желаете получить в конечном итоге подобный результат, то советую от него избавиться. Как удалить данное расширение понятно (если не понятно прочитайте данную статью), а как быть с вышеупомянутыми таблицами, которые могут (не всегда, но могут) остаться в базе данных и сами по себе никуда оттуда не денутся это уже вопрос, на который я попытаюсь ответить.

Итак, приступим, для начала удаляем всех представителей расширения «Умный поиск» (плагины, компонент и модуль). Так как база данных у нас в MySQL переходим в phpMyAdmin и находим все связанные с умным поиском таблицы (25 штук), их найти не трудно, у каждой таблицы в имени присутствует слово _ finder. Если кому-то страшно это делать, то для начала экспортируйте их на всякий случай (мало ли чего произойдет).

Хочу обратить внимание, когда будите выделять таблицы для последующего удаления, внимательно смотрите на их имена, вполне возможно, что Вы случайно зацепите таблицы с именем _fields*, которые не имеют никакого отношения к «Умному поиску».

Выделили все таблицы и в самом низу страницы в выпадающем списке «С отмеченными» выбираем «Удалить»:

Таблицы в базе данных Joomla 3, которые относятся к «Умному поиску»

После этого у Вас уточнят – а действительно ли нужно удалить данные таблицы? На этот вопрос надо ответить положительно:

Подтверждаем, что мы действительно хотим удалить таблицы с базы данных Joomla 3

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

Все, на этом мы избавились от «Умного поиска» и от его таблиц в базе данных, но это еще не конец. Дело в том, что в Joomla 3 существует проверка на наличие подобных стандартных таблиц, и если Вы теперь зайдете в панель управления и перейдете в раздел проверки базы данных (Расширения -> Менеджер расширений -> База данных), то увидите следующую картину:

Ошибки в панели управления после удаления таблиц в базе данных Joomla 3

Как я и говорил это результат встроенной проверки на отсутствие стандартных таблиц в базе данных. Ситуация конечно не приятная, но все же не такая уж и страшная. Все что нам потребуется для того чтобы избавиться от подобной неразберихи в панели управления это удалить либо очистить некоторые файлы Joomla.

Ни в коем случае не нажимайте на кнопку «Исправить» иначе все удаленные таблицы будут заново созданы и весь процесс придется повторять заново.

Файла всего четыре (если внимательно посмотреть на скриншот, то можно заметить имена нужных фалов):

Найти данные файлы можно по адресу administrator/components/com_admin/sql/updates/mysql. Что с ними делать? Да ничего особенного – удалить или очистить. Какие файлы можно удалять (очищать), а какие только править смотрите в таблице:

Файл Действия
3.0.0.sql Удалить строки, в которых содержится записи finder_
2.5.0-2011-12-23.sql Удалить или очистить
2.5.0-2011-12-21-2.sql Удалить или очистить
3.7.0-2017-03-19.sql Удалить или очистить

Во всех этих файлах, кроме первого речь идет исключительно о таблицах «Умного поиска», следовательно, их можно удалять с сервера полностью или очистить их содержимое. А вот файл 3.0.0.sql проверяет таблицы не только того самого умного поиска, но и другие. Конечно, можно удалить и его, но в этом случае Вы не будите получать сообщения об удаленных таблица других стандартных расширений. Поэтому вычищаем в нем только нужные записи.

Удалять много записей не придется, их относительно мало – 26 штук. Находятся они в строках 49-71 и 110-112 включительно.

После того как файлы были очищены можно снова зайти в панель управления и посмотреть как у нас дела с базой данных, все должно быть замечательно!

Точно таким же образом можно избавиться от проверки других несуществующих таблиц в базе данных Joomla 3, например, после удаления компонента «Баннеры» и прочих. Надо точно так же удалить строки с файла 3.0.0.sql, в которых имеются упоминания о таблицах этих расширений, например _banners для компонента баннеров и так далее. Ничего сложного нет!

joom4all.ru

Оптимизация работы Joomla на сервере

Сегодняшнюю тему про Joomla CMS можно назвать, пожалуй, одной из самых важных и востребованных, потому как мы будем обсуждать оптимизацию работы самого движка Joomla.

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

Оптимизация работы сервера для Joomla

1. Постоянно следите за тем программным обеспечением, которое установлено на вашем сервере и соответственно позволяет запускать CMS. Так, например, интерпретатор PHP версии 5.2 работает почти в 2 раза быстрее, чем тот же PHP 4.4. Конечно же, в большинстве случаев, установку версии PHP вы не сможете контролировать, если покупаете виртуальный сервер, но если в вашем распоряжении сервер – стоит об этот вовремя задуматься.

2. Используйте PHP акселлераторы. Среди самых популярных в настоящее время можно выделить такие какAlternative PHP Cache, eAccelerator, XCache, Zend Optimizer. По данным большого числа тестов, самая большое быстродействие CMS Joomla с использованием APC и PHP версии 5.2.2, во всяком случае на данный момент.

3. Оптимизация Apache. Если вы используете сервер Apache, оптимизируйте его под свои нужды. Большинство веб мастеров просто забывают про данный способ, но чаще всего он даёт самый весомый результат и делает Joomla очень быстрой.

5. Не стоит так же забывать про оптимизацию СУБД MySQL, чаще всего Joomla работает именно на ней, а значит данный пункт будет полезен всем. MySQL устанавливается на сервере с минимальными настройками, но на купленном вами сервере могут быть установлены многие другие функции, которые будут тормозить всю систему. Так, например, отличным вариантом ускорения работы MySQL является настройка кэширования запросов.

6. Если вы начинаете оптимизацию работы крупного или перспективного проекта, который в скором будущем может принести несколько тысяч или даже десятков тысяч посетителей в сутки, подумайте о переносе картинок на отдельный сервер. Можно использовать мощности бесплатных сервисов и разместить изображения там. Точно также можно перенести и многие другие файлы, например, файловые архивы, видео ролики и другие файлы. Данный пример часто используется на музыкальных, видео или портала с фотографиями.

7. Не стоит использовать сервер также в качестве DNS-сервера – вынесите его на отдельный сервер.

8. Не забудьте включить gzip-сжатие, если хотите уменьшить трафик (правда, это слегка увеличит нагрузку на процессор). Прежде чем определиться, стоит ли использовать сжатие или нет, стоит потратить несколько дней на тестирование работы Joomla на нескольких режимах.

Например, есть простой, но вместе с тем очень действенный способ уменьшить нагрузку на движок. Самое интересное, что это можно сделать не только для html, которые генерирует CMS, но и для css и js. Если на вашем сервере установлен Apache 2, стоит попробовать прописать в .htaccess следующий код:

SetOutputFilter DEFLATE

9. Совершенно не к чему каждый раз загружать одни и те же css/js файлы и графику.

10. Оптимизируйте графику в шаблоне. Некоторые сайты славятся тем, что загружают несколько сотен килобайт картинок. Вообще, проверяйте объем загружаемой информации и время загрузки на сайте.

11. Старайтесь уменьшить количество запросов к серверу. Постарайтесь объединить имеющиеся css-файлы в один. То же самое относится и к js-скриптам. Да и сами файлы очистить от лишнего мусора.

12. Для более быстрого отображения страницы в браузере желательно, чтобы на странице не было ошибок в HTML и CSS вёрстке страниц сайта. Проверить правильность вашего кода можно на сайте validator.w3.org – этот сайт проверить соответствие всех ваших конструкций по стандартам W3C.

13. Добавьте favicon.ico и favicon.gif в корень сайта, т.к. некоторые браузеры сначала запрашивают их, а не те, которые указаны в коде страницы (их не так много, но в логах сервера эти запросы появляются с завидной регулярностью).

Оптимизация работы Joomla

1. Включите кэширование для всех модулей, для которых это возможно. Время жизни кэша определите из условия: сколько времени вы готовы ждать, пока добавленная новость появится в модуле последних новостей? Для одних сайтов это будет 10 минут, для других – час, для третьих – сутки. (Если хотите, вот числа: в «свежее» установленной Joomla при посещении главной страницы генерируется 36 запросов, а с включенным кэшированием модулей — всего 13 запросов).

2. Добавьте индексы для таблиц в БД. Тут есть несколько альтернативных предложений по оптимизации: ircmaxell.com и forum.joomla.org (перевод на русский — joomlaportal.ru). Я бы рекомендовал те, что описаны на forum.joomla.org, т.к. на ircmaxell.com уж очень большие индексы создаются.

3. Не забывайте, что при частом изменении таблиц БД они сильно возрастают в размере, поэтому время поиска по БД тоже возрастает. Поэтому БД нужно регулярно оптимизировать (по сути — сжимать). Установите мамбот OptimizeTables (от smart’а) или выполняйте оптимизацию таблиц вручную (выделите все таблицы через phpMyAdmin, и выполните команды repair и optimize).

4. Можно сменить тип таблицы jos_session на memory:

alter table jos_session type=memory;

(если ваша версия Joomla использует другой префикс таблиц, то не забудьте заменить «jos» на него).

5. Отключите встроенную статистику. В большинстве случаев статистика, предоставляемая хостером, дает намного больше информации о посетителях. Но можно оставить статистику поисковых запросов.

6. Удалите лишние (неиспользуемые) расширения (компоненты, модули, мамботы).

7. Много запросов образуется при формировании списки новостей в различных модулях (из-за получения Itemid для каждой новости). Это можно ускорить, используя постоянный Itemid, появившийся в 1.0.12.

8. Много запросов зачастую генерируют сторонние SEF-компоненты. При большой нагрузке лучше использовать встроенный SEF, или не использовать SEF вовсе (кстати, встроенный SEF практически не требователен к ресурсам; более того, по данным теста joomla.org Joomla!1.5 с включенным SEF работает быстрее, чем с отключенным).

9. Старайтесь не использовать в настройках пунктов меню «Category Name Linkable» («Названия категорий в виде ссылок»).

10. Для полей id в таблицах БД можно вместо типа int(11) указать smallint unsigned, что приводит к небольшому уменьшению объема памяти, требуемого для хранения БД.

11. Очень часто самую большую нагрузку создают поисковые роботы, которые во время индексации страниц сайта добавляют материал в свои базы. ЗА один такой приход, поисковая система может пройтись по нескольким сотням страниц сайта, тем самым за несколько минут сделав довольно серьёзную нагрузку на сервер. Чаще всего это некритично, но, если мы имеем дело с очень посещаемым ресурсом, стоит задуматься. Закройте через файл robots.txt, который служит для управления поисковым роботом, от индексации поисковыми ботами компонент com_search и файл index2.php. Также можно закрыть com_wraper и com_newsfeed, которые отвечают за новостные ленты на сайте. Кроме того, поисковые системы могут посчитать это за дублированный контент, а в перспективе пессимизировать сайт.

Ниже приведен набор правил для встроенного SEF, то есть, включённым ЧПУ, который делает внутренние ссылки на сайте более красивыми и удобными:

User-agent: *Disallow: /index2.php?Disallow: /component/option,com_search/Disallow: /component/option,com_newsfeeds/Disallow: /component/option,com_wrapper/Disallow: /administrator/Disallow: /cache/Disallow: /components/Disallow: /editor/Disallow: /help/Disallow: /includes/Disallow: /language/Disallow: /mambots/Disallow: /media/Disallow: /modules/

12. Очень часто бывает, что определённая картинка на сайте, будь это даже не часть дизайна сайта, «весит» несколько сотен килобай, в то время как могла бы весить всего лишь несколько десятков или даже меньше, если обработать её в редакторе и сохранить в другом формате.

13. И на последок, очень часто главной проблемой в скорости загрузки сайта и вообще в нагрузке сервера является плохая оптимизация шаблона для сайта. Это может касаться «жирной» графики, лишнего html и css кода, большого объёма JS скриптов.

www.woolfs.ru

«Настройки базы данных» в «Общих настройках» админки Joomla 3

Подробности Родительская категория: CMS — движки сайтов Категория: Joomla

«Настройки базы данных» в «Общих настройках» админки Joomla 3

В этой статье рассмотрим «Настройки базы данных» в «Общих настройках» админки Joomla 3, которые находятся на вкладке «Сервер». Эти настройки позволяют указать тип базы данных, а также хост, имя пользователя базы данных, имя базы данных для соединения рабочих скриптов Joomla на сервере с базой данных. Также есть возможность указать префикс таблиц базы данных для использования одной базы данных в работе нескольких сайтов.

Внешний вид «Настроек базы данных» в админке Joomla 3 (картинкой)

Для того, чтобы понять, как выглядят «Настройки базы данных» в админке Joomla посмотрим на картинку ниже:

Внешний вид «Настроек базы данных» в админке Joomla 3 (картинкой)

«Настройки базы данных» в админке Joomla 3

«Настройки базы данных» в админке Joomla состоят, как было указано выше, из пяти полей, значения которых можно настраивать:

Для внесения изменений нужно изменить данные в этих полях и воспользоваться кнопкой «Сохранить» или «Сохранить и закрыть» в верхнем ряду кнопок управления «Общих настройках» админки. Для того, чтобы покинуть общие настройки без внесения изменений можно воспользоваться кнопкой «Отменить».

Заберите ссылку на статью к себе, чтобы потом легко её найти ;)

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

Обсудить эту статью

INFO: Вы отправляете сообщение как 'Гость'

mb4.ru

Оптимизация структуры базы данных Joomla

На официальном форуме Joomla появилась интересное сообщение: пользователь Beat (один из разработчиков компонента CommunityBuilder) провел анализ эффективности наиболее часто выполняемых запросов к базе данных Joomla и предложил небольшую оптимизацию индексов таблиц для повышения производительности Joomla.

По словам автора данная модификация применима как к сайтам на Joomla 1.0.x, так и для сайтов на Joomla 1.5 RC.

Несмотря на то, что данные запросы не затрагивают непосредственно данных, а влияют только на индексы таблиц базы данных, рекомендуется перед применением этой модификации сделать резервную копию таблиц БД вашего сайта.

Итак, Beat рекомендует для повышения производительности сайта на Joomla перестроить индексы на некоторых таблицах в базе данных. Для этого необходимо выполнить следующие запросы:

ALTER TABLE `jos_core_acl_groups_aro_map` ADD INDEX `aro_id` ( `aro_id` ) ; ALTER TABLE `jos_users` ADD INDEX `idxemail` ( `email` ); ALTER TABLE `jos_content` ADD INDEX `idx_created_by` ( `created_by` ) ; ALTER TABLE `jos_users` ADD INDEX `block_id` ( `block` , `id` ); ALTER TABLE `jos_users` ADD INDEX `username` ( `username` ); ALTER TABLE `jos_session` ADD INDEX `userid` ( `userid` ); ALTER TABLE `jos_categories` DROP INDEX `idx_section`; ALTER TABLE `jos_core_acl_aro_sections` DROP INDEX `jos_gacl_value_aro_sections`; ALTER TABLE `jos_core_acl_aro_sections` DROP INDEX `jos_gacl_hidden_aro_sections`; ALTER TABLE `jos_core_log_searches` ADD INDEX ( `hits` ) ; ALTER TABLE `jos_core_log_searches` ADD INDEX ( `search_term` ( 16 ) ) ; ALTER TABLE `jos_stats_agents` ADD INDEX `type_agent` ( `type` , `agent` );

Более подробную техническую информацию о причинах такой модификации можно почитать на официальном форуме в теме MySQL optimizations proposals submission for Joomla 1.5 (indexes optimizations).

https://joomlaportal.ru/content/view/1379/68/

Просмотров: 1037

Похожие посты

proggear.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта