Про очищення бази даних від "зайвого"

in #php21 days ago (edited)

При створенні будь-якого вебсайту іноді виникає необхідність виконання деяких команд для підтримання "чистоти" бази даних. Зазвичай йдеться про завершені сесії користувачів, прострочені запити або замовлення на сайті, неактуальні повідомлення чи сповіщення. Видалення застарілих даних покращує загальну продуктивність сайту та зменшує використання ресурсів, особливо якщо база даних активно використовується.


Зображення: згенеровано ШІ.

Зменшення розміру бази даних прискорює виконання запитів завдяки зменшенню обсягу даних для обробки. На мою думку, історія активності кожного користувача має бути видалена через певний час, наприклад через 12 місяців. Неактивовані облікові записи користувачів, які не завершили реєстрацію на сайті, мають видалятися протягом 24 годин. Щодо невикористовуваних облікових записів користувачів — питання цікаве, і кожен вебмайстер має вирішити це самостійно. Це більше залежить від тематики сайту. Наприклад, сайти, на яких здійснюються фінансові операції (наприклад, обмін валют), згідно із законом повинні зберігати дані про користувачів протягом семи років.

Для видалення даних кожен запис у базі даних має містити часову позначку. Наприклад, у таблиці з користувачами має бути запис про дату реєстрації, а також про активацію облікового запису. А історія активності користувача сама по собі передбачає записи дати активності людини на сайті.

Перед остаточним видаленням даних можна здійснити "м’яке видалення". Тобто в базі даних певні записи позначаються як видалені, і якщо протягом певного періоду часу не відбудеться жодних змін, наприклад з боку користувача, виконується остаточне видалення.

Приклад:

UPDATE users SET deleted = '1' WHERE id = '12345';

Деякі дані можна видаляти одразу, наприклад, користувачів, які не активували свій обліковий запис після реєстрації:

DELETE FROM users WHERE activated = '0' AND last_activity < NOW() - INTERVAL 1 DAY;

Скрипт для "очищення" бази даних найкраще зберегти в окремому файлі на сервері. Для запуску такого роду завдань я віддаю перевагу не використовувати планувальник cron. Натомість можна підключити наш файл для очищення бази даних у тій частині вебсайту, яка найрідше використовується. Під словом "рідко" я маю на увазі "не за будь-якої дії". Наприклад, скрипт очищення бази даних може виконуватися під час збереження будь-яким користувачем налаштувань профілю. Цю дію виконують раз на... n тижнів або місяців. Тепер n помножте на кількість активних користувачів. А частіше й не потрібно.

include_once("db_clean.php");

Кілька слів про планувальник завдань cron. Cron — це утиліта для автоматичного виконання завдань за розкладом в Unix-подібних ОС. Це зручно для здійснення розсилок за розкладом, надсилання нагадувань користувачам. Для очищення та оптимізації баз даних cron також підходить, але, на мою думку, "очищення" за розкладом зовсім не обов’язкове, хіба що йдеться про великий проєкт з багатотисячною відвідуваністю щодня.

Coin Marketplace

STEEM 0.24
TRX 0.24
JST 0.039
BTC 102805.56
ETH 3289.69
SBD 6.31