From: Eugen Rochko Date: Sun, 19 Aug 2018 00:01:49 +0000 (+0200) Subject: Do not use WHERE NOT IN in CopyStatusStats migration (#8281) X-Git-Url: https://git.xn--scling-oua.cat.family/?a=commitdiff_plain;h=f13afa1ee92ceb40ce2e44f6457bd6e75b80adb5;p=mastodon.git Do not use WHERE NOT IN in CopyStatusStats migration (#8281) Fix #8275 As the batch operation progresses, the statuses_stats table grows, and the WHERE NOT IN subquery becomes more expensive --- diff --git a/db/migrate/20180812173710_copy_status_stats.rb b/db/migrate/20180812173710_copy_status_stats.rb index 0c5907c30..850aa9c13 100644 --- a/db/migrate/20180812173710_copy_status_stats.rb +++ b/db/migrate/20180812173710_copy_status_stats.rb @@ -3,7 +3,7 @@ class CopyStatusStats < ActiveRecord::Migration[5.2] def up safety_assured do - Status.where.not(id: StatusStat.select('status_id')).select('id').find_in_batches do |statuses| + Status.unscoped.select('id').find_in_batches(batch_size: 5_000) do |statuses| execute <<-SQL.squish INSERT INTO status_stats (status_id, reblogs_count, favourites_count, created_at, updated_at) SELECT id, reblogs_count, favourites_count, created_at, updated_at