Improve performance of follow recommendation scheduler (#16159)
Express follow_recommendations in terms of account_summaries rather than accounts, integrate filters that are unconditionally used, and materialize the resulting view. This should result in the bulk of the computation being performed only once instead of **once per recommendation language**.
This commit is contained in:
parent
351c744590
commit
d9ae3db8d5
5 changed files with 75 additions and 16 deletions
|
@ -0,0 +1,18 @@
|
|||
class UpdateFollowRecommendationsToVersion2 < ActiveRecord::Migration[6.1]
|
||||
# We're switching from a normal to a materialized view so we need
|
||||
# custom `up` and `down` paths.
|
||||
|
||||
def up
|
||||
drop_view :follow_recommendations
|
||||
create_view :follow_recommendations, version: 2, materialized: true
|
||||
|
||||
# To be able to refresh the view concurrently,
|
||||
# at least one unique index is required
|
||||
safety_assured { add_index :follow_recommendations, :account_id, unique: true }
|
||||
end
|
||||
|
||||
def down
|
||||
drop_view :follow_recommendations, materialized: true
|
||||
create_view :follow_recommendations, version: 1
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue