Подскажите, пожалуйста, есть база на 500тыс записей. В сутки примерно 1тыс удаляется, 1тыс добавляется. Сейчас старые данные просто удаляются, но появилась необходимость просматривать то что было удаленно. Поэтому думаю лучше копировать запись из основой базы в отдельную "базу для удаленных" и удалять из основной (1) или ставить статус deleted = 1 в основной базе и оставлять (2).
Но так получается, что база будет постоянно расти и теоретически нагрузка будет увеличиваться, а производительность уменьшаться. Удаленные записи уже никак не будет использоваться. Только иногда просмотреть. Что то вроде системы логов.
При удалении объекта в колонку deleted_at записывается время удаления и в модели везде проставляются фильтры, чтобы не выводить удаленные объекты. Для получения удаленных объектов лучше создать отдельный скоуп.