diff --git a/changelog.d/activity_type_index.change b/changelog.d/activity_type_index.change new file mode 100644 index 000000000..ea2d7adbe --- /dev/null +++ b/changelog.d/activity_type_index.change @@ -0,0 +1 @@ +Add new activity actor/type index. Greatly speeds up retrieval of rare types (like "Listen") diff --git a/config/config.exs b/config/config.exs index 50672cfc8..a231c5ba0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -48,7 +48,7 @@ config :pleroma, ecto_repos: [Pleroma.Repo] config :pleroma, Pleroma.Repo, telemetry_event: [Pleroma.Repo.Instrumenter], - migration_lock: nil + migration_lock: :pg_advisory_lock config :pleroma, Pleroma.Captcha, enabled: true, diff --git a/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs new file mode 100644 index 000000000..a0fac28a8 --- /dev/null +++ b/priv/repo/migrations/20250314153704_add_activities_actor_type_index.exs @@ -0,0 +1,14 @@ +defmodule Pleroma.Repo.Migrations.AddActivitiesActorTypeIndex do + use Ecto.Migration + @disable_ddl_transaction true + + def change do + create( + index( + :activities, + ["actor", "(data ->> 'type'::text)", "id DESC NULLS LAST"], + concurrently: true + ) + ) + end +end