From adf15c4f6b856c3dfc98904a039f678cac036c1f Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 24 Jan 2024 13:57:12 +0000 Subject: [PATCH] Run `ANALYZE` after fiddling with stats (#16849) Introduced in #16833 Fixes #16844 --- changelog.d/16849.bugfix | 1 + .../delta/84/01_auth_links_stats.sql.postgres | 2 ++ .../delta/84/03_auth_links_analyze.sql.postgres | 16 ++++++++++++++++ 3 files changed, 19 insertions(+) create mode 100644 changelog.d/16849.bugfix create mode 100644 synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres diff --git a/changelog.d/16849.bugfix b/changelog.d/16849.bugfix new file mode 100644 index 000000000..1bbe2b9ad --- /dev/null +++ b/changelog.d/16849.bugfix @@ -0,0 +1 @@ +Fix database performance regression due to changing Postgres table statistics. Introduced in v1.100.0rc1. diff --git a/synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres b/synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres index b0b41bd10..0c3ae979e 100644 --- a/synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres +++ b/synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres @@ -16,3 +16,5 @@ -- figuring that out by itself. ALTER TABLE event_auth_chain_links ALTER origin_chain_id SET (n_distinct = -0.5); ALTER TABLE event_auth_chain_links ALTER target_chain_id SET (n_distinct = -0.5); + +-- We should have done an `ANALYZE event_auth_chain_links` here, but we forgot. diff --git a/synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres b/synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres new file mode 100644 index 000000000..aecb72a47 --- /dev/null +++ b/synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres @@ -0,0 +1,16 @@ +-- +-- This file is licensed under the Affero General Public License (AGPL) version 3. +-- +-- Copyright (C) 2023 New Vector, Ltd +-- +-- This program is free software: you can redistribute it and/or modify +-- it under the terms of the GNU Affero General Public License as +-- published by the Free Software Foundation, either version 3 of the +-- License, or (at your option) any later version. +-- +-- See the GNU Affero General Public License for more details: +-- . + +-- We need to do an ANALYZE after `01_auth_links_stats.sql.postgres`, where we +-- fiddled with the stats. +ANALYZE event_auth_chain_links;