summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--changelog.d/16849.bugfix1
-rw-r--r--synapse/storage/schema/main/delta/84/01_auth_links_stats.sql.postgres2
-rw-r--r--synapse/storage/schema/main/delta/84/03_auth_links_analyze.sql.postgres16
3 files changed, 19 insertions, 0 deletions
diff --git a/changelog.d/16849.bugfix b/changelog.d/16849.bugfix
new file mode 100644
index 0000000000..1bbe2b9ad8
--- /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 b0b41bd106..0c3ae979eb 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 0000000000..aecb72a477
--- /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:
+-- <https://www.gnu.org/licenses/agpl-3.0.html>.
+
+-- We need to do an ANALYZE after `01_auth_links_stats.sql.postgres`, where we
+-- fiddled with the stats.
+ANALYZE event_auth_chain_links;