Ответ
Этот процесс называется Data Purging (очистка данных).
Цель:
Удаление устаревших или более неактуальных данных из рабочих таблиц для уменьшения размера базы данных, ускорения выполнения запросов (SELECT
, UPDATE
) и упрощения обслуживания.
Реализация:
Обычно Data Purging
автоматизируется и выполняется периодически (например, раз в сутки с помощью cron-задачи), удаляя записи, которые старше определенного порога (например, логи старше 90 дней).
Пример на Go с использованием GORM:
// purgeOldLogs удаляет записи логов старше 90 дней
func purgeOldLogs(db *gorm.DB) error {
ninetyDaysAgo := time.Now().AddDate(0, 0, -90)
// Выполняем DELETE ... WHERE created_at < ...
result := db.Where("created_at < ?", ninetyDaysAgo).Delete(&LogEntry{})
if result.Error != nil {
return result.Error
}
log.Printf("Purged %d old log entries", result.RowsAffected)
return nil
}
Альтернативные подходы:
- Архивирование (Archiving): Вместо полного удаления, данные переносятся в отдельное, более медленное и дешевое хранилище (другая таблица, база данных или файловый архив). Это позволяет сохранить данные для анализа или на случай аудита.
- Партиционирование (Partitioning): Таблица разбивается на части (партиции) по определенному ключу, часто по дате. Удаление старых данных сводится к быстрому удалению целой партиции (
DROP PARTITION
), что гораздо эффективнее, чемDELETE
для миллионов записей.