Як зменшити розмір бази даних

Для інтернет-магазинів робочий варіант Чистилки можна скачати на github.com.

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







Зауважу, що перед будь-якими роботами по "оптимізації" розміру бази просто необхідно створити її резервну копію.

Я використовую для цього Sypex. На сайті у них є безкоштовна версія, якої цілком достатньо для резервування і відновлення бази даних umi.cms.

Крок 1. Чистимо логи.

Першим кроком я дивлюся розмір, займаний в базі різними балками і статистикою. Знайти таблиці для статистики дуже легко, вони все починаються в назві на cms_stat_ *.

Як зменшити розмір бази даних

Якщо вони непомірно роздуті, очищаю їх.

Для очищення використовую SQLyog. Або можна phpmyadmin взяти, він на всіх хостингах фактично є.

Крок 2. Для інтернет-магазинів чистимо замовлення.

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







За ідеєю такі замовлення автоматично повинні через якийсь час самоочищатися у Юмі. Але видать не у всіх це сомоочіщеніе відпрацьовує, що і призводить до непомірного зростання бази.

У таких випадках доводиться чистити базу даних. використовуючи скрипти. Чиститься база в три проходи: видалення інформації про лівих покупців, потім про приховані невикористовуваних замовленнях і позицій товарах в кошиках видаляються замовлень.

У моїй практиці пападалісь пара не дуже великих інтернет-магазинів, база яких досягла розміру більше 500 мб буквально за пару років роботи. Причому саме за рахунок невикористаних замовлень в базі. Після очищення розмір бази зводиться до звичайних 50-90 мБ.

Зазвичай в процесі очищення видаляються 10-ки тисяч записів, що в кожному випадку позитивно позначається на швидкодії всього сайту в цілому. Так як зменшуються не тільки таблиці з власне даними, але й супровідні індексні таблиці. Результат видно на прикладі за розміром таблиці cms3_object_content до і після очищення (дану базу намагаюся чистити раз в 3-4 місяців):

Як зменшити розмір бази даних
Як зменшити розмір бази даних

Приклад коду першого етапу очищення в базі даних про непотрібних покупців в кинутих замовленнях:

Потім точно також видаляємо непотрібні замовлення:

Ну і останнім етапами знаходимо і видаляємо товарні позиції, які зберігалися в віддалених раніше замовленнях:

Все, база очищена

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

Крок 3. Завантажити Чистилки.







Схожі статті