diff --git a/app/lib/vacuum/media_attachments_vacuum.rb b/app/lib/vacuum/media_attachments_vacuum.rb
index 7fb347ce4d51c64499afcb286f7bfde9ac872a14..7c0a85a9d921ca0707f290fedeee6f7e46c19b93 100644
--- a/app/lib/vacuum/media_attachments_vacuum.rb
+++ b/app/lib/vacuum/media_attachments_vacuum.rb
@@ -8,8 +8,8 @@ class Vacuum::MediaAttachmentsVacuum
   end
 
   def perform
-    vacuum_cached_files! if retention_period?
     vacuum_orphaned_records!
+    vacuum_cached_files! if retention_period?
   end
 
   private
diff --git a/app/lib/vacuum/preview_cards_vacuum.rb b/app/lib/vacuum/preview_cards_vacuum.rb
index 84ef100ed9472479c7aaf896f8d74cc899a7389f..14fdeda1ca9f62a3db814bbbcd2e50b9f5eab45b 100644
--- a/app/lib/vacuum/preview_cards_vacuum.rb
+++ b/app/lib/vacuum/preview_cards_vacuum.rb
@@ -9,7 +9,6 @@ class Vacuum::PreviewCardsVacuum
 
   def perform
     vacuum_cached_images! if retention_period?
-    vacuum_orphaned_records!
   end
 
   private
@@ -21,18 +20,10 @@ class Vacuum::PreviewCardsVacuum
     end
   end
 
-  def vacuum_orphaned_records!
-    orphaned_preview_cards.in_batches.destroy_all
-  end
-
   def preview_cards_past_retention_period
     PreviewCard.cached.where(PreviewCard.arel_table[:updated_at].lt(@retention_period.ago))
   end
 
-  def orphaned_preview_cards
-    PreviewCard.where('NOT EXISTS (SELECT 1 FROM preview_cards_statuses WHERE preview_cards_statuses.preview_card_id = preview_cards.id)').where(PreviewCard.arel_table[:created_at].lt(TTL.ago))
-  end
-
   def retention_period?
     @retention_period.present?
   end
diff --git a/app/workers/scheduler/vacuum_scheduler.rb b/app/workers/scheduler/vacuum_scheduler.rb
index ce88ff204d3fa2548b763504367edd3d8249fff2..9544f808bf97130279e2990f0d36121e1dcabfa1 100644
--- a/app/workers/scheduler/vacuum_scheduler.rb
+++ b/app/workers/scheduler/vacuum_scheduler.rb
@@ -3,7 +3,7 @@
 class Scheduler::VacuumScheduler
   include Sidekiq::Worker
 
-  sidekiq_options retry: 0
+  sidekiq_options retry: 0, lock: :until_executed
 
   def perform
     vacuum_operations.each do |operation|
diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb
index c1327053df7961fb0a66e29a460353d3ded40254..9d2abf0745eca9ac60285536a4388bc0b60a7a99 100644
--- a/config/initializers/sidekiq.rb
+++ b/config/initializers/sidekiq.rb
@@ -35,4 +35,5 @@ SidekiqUniqueJobs.configure do |config|
   config.reaper_count    = 1000
   config.reaper_interval = 600
   config.reaper_timeout  = 150
+  config.lock_ttl        = 50.days.to_i
 end
diff --git a/spec/lib/vacuum/preview_cards_vacuum_spec.rb b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
index 4a4a599fa4716b648a27957e60a9b1f64c1de137..275f9ba92fa637dbb0f13617d0e7ef3eec0f2813 100644
--- a/spec/lib/vacuum/preview_cards_vacuum_spec.rb
+++ b/spec/lib/vacuum/preview_cards_vacuum_spec.rb
@@ -28,9 +28,5 @@ RSpec.describe Vacuum::PreviewCardsVacuum do
     it 'does not delete attached preview cards' do
       expect(new_preview_card.reload).to be_persisted
     end
-
-    it 'deletes preview cards not attached to any status' do
-      expect { orphaned_preview_card.reload }.to raise_error ActiveRecord::RecordNotFound
-    end
   end
 end