Очищення і оптимізація бази даних Joomla 3

  1. Історія змін матеріалів і таблиця jos_ucm_history

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

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

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

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

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

Те, що з часом база даних Joomla починає сильно розростатися це факт, але не завжди різкий скачок розміру бази даних пов'язаний зі збільшенням кількості матеріалів. У моїй практиці було багато випадків, коли кількість матеріалів було незмінним, а база даних збільшувалася на очах.

У чому криється причина збільшення розміру бази даних? Ну, по-перше це сторонні розширення, при установці яких в базі даних Joomla додаються нові таблиці і записи. Крім того існують розширення які не "замітають за собою сліди» навіть після їх видалення - розширення видалено, а його таблиці залишилися в базі даних.

Інша поширена причина це розширення, які встановлені за замовчуванням в Joomla 3. Наприклад, такі розширення як «Розумний пошук», а так само версійність матеріалів (це не зовсім розширення). Давайте розглянемо їх більш детально.

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

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

Що дає ця можливість? Якщо чесно, то для більшості користувачів абсолютно нічого крім збільшення обсягу бази даних. Суть даної функції полягає в тому, що Джумла після зміни матеріалу зберігає його старі версії, і не просто одну - дві, а відразу десять!

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

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

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

Але не все так просто, навіть якщо Ви вимкніть функцію збереження версій матеріалів, в базі даних все-таки залишаться раніше створені версії. Користі від них в даному випадку немає ніякої і краще від них позбутися. Для цього необхідно перейти в phpMyAdmin, знайти таблицю jos_ucm_history, в якій зберігаються версії змін матеріалів, і очистити її (замість префікса jos може бути будь-який інший вказаний Вами при установці Joomla ):

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

Для наочності на скріншоті вище я показав розмір тієї самої таблиці jos_ucm_history, яка зберігає історію змін, і таблиці з матеріалами jos_content. Розмір цих таблиць відрізняється більш ніж в два рази і це при тому, що матеріалів зовсім мало і вони практично не редагувалися.

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

На цьому, мабуть, я закінчу. У наступній статті ( розумний пошук і його вплив на розмір бази даних ) Я розповім, які ще таблиці можна очистити в базі даних Joomla, тим самим скоротивши її обсяг ще більше.

Тепер задайте собі питання - а воно мені треба?
У чому криється причина збільшення розміру бази даних?
Що дає ця можливість?
Що тут можна зробити?