0
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2026-08-06 13:08:40 +08:00
discourse/app/models/concerns
Krzysztof Kotlarek aab24442ec
PERF: Serve the activity_by_category report from daily rollups (#42046)
Previously, `activity_by_category` aggregated `topics`, `posts` and
`topic_view_stats` across the whole reporting window on every dashboard
request, and because the category filter was only applied after the
join, selecting three categories cost the same as scanning all of them.
On a 600k topic / 4.8M post dataset that was ~440ms per request, per
admin, growing with the site.

This change persists per-day, per-category counts in
`category_activity_daily_rollups` and has the report read only those,
cutting the same query to ~4ms.
`Jobs::MaintainCategoryActivityDailyRollups` refreshes recent days every
three hours, while
`Jobs::RebuildCategoryActivityDailyRollups` recalculates history daily
so topics that are recategorised or deleted after the fact are
reattributed rather than left frozen. Invalidating on change was
rejected because `PostMover`, bulk category actions, imports and rake
tasks all rewrite historical attribution without firing an event.
2026-07-28 12:53:29 +08:00
..
reports PERF: Serve the activity_by_category report from daily rollups (#42046) 2026-07-28 12:53:29 +08:00
acl_target.rb DEV: Add banned_acl concept to AccessControlList (#41254) 2026-06-29 16:22:30 +10:00
anon_cache_invalidator.rb
cached_counting.rb
category_hashtag.rb DEV: Replace Ruby numbered parameters by it where applicable (#37810) 2026-02-13 13:59:07 +01:00
custom_field.rb
has_custom_fields.rb DEV: Enable some minor rubocop rules (#40094) 2026-05-19 15:29:38 +02:00
has_deprecated_columns.rb
has_destroyed_web_hook.rb DEV: Enable some minor rubocop rules (#40094) 2026-05-19 15:29:38 +02:00
has_nested_reply_stats.rb PERF: Add fast nested reply stats preparation (#41870) 2026-07-21 10:45:53 -05:00
has_post_upload_references.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00
has_sanitizable_fields.rb
has_search_data.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00
has_url.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00
limited_edit.rb
locale_matchable.rb DEV: Use localizable concerns across post, topic, categories (#34137) 2025-08-07 22:12:01 +08:00
localizable.rb FEATURE: Localize local oneboxes (#40493) 2026-06-08 11:49:55 +08:00
positionable.rb DEV: Enable Style/RedundantParentheses rubocop rule (#40095) 2026-05-19 15:48:09 +02:00
reviewable_action_builder.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00
roleable.rb SECURITY: Signup-time primary_group_id assignment grants whisperer access 2026-06-30 16:10:52 +02:00
searchable.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00
second_factor_manager.rb DEV: Split passkey and security key WebAuthn ceremonies for 2FA (#40817) 2026-06-17 12:52:47 -03:00
stats_cacheable.rb
topic_tracking_state_publishable.rb
trashable.rb DEV: Enable Style/RedundantSelf rubocop rule (#40098) 2026-05-19 19:27:45 +02:00