我最近在从 PG 9.4 => 11 迁移时遇到了一个奇怪的问题
我使用将生产服务器从 PG 9.4 复制到 PG 11 pglogical
。一切都运行良好,除了我们发现一些复杂的查询在 PG 11 服务器上花费了数十秒,而在 9.4 服务器上花费了不到一秒。
事实证明,ANALYZE
在新服务器上运行可以解决缓慢的查询问题。因此,我检查$PGDATA/pg_stat
并发现它们在两台服务器上都是$PGDATA/pg_stat_tmp
空的!
PG在哪里存储统计信息?(跟进问题——pglogical
复制时不收集统计数据吗?)
编辑/跟进:
pg_stat_user_tables
新 PG 11 服务器上的查询输出-
select analyze_count,autoanalyze_count, count(*) from pg_stat_user_tables group by 1,2;
analyze_count | autoanalyze_count | count
---------------+-------------------+-------
1 | 11 | 1
4 | 7 | 1
1 | 0 | 14
4 | 0 | 168
(4 rows)
旧 PG 9.4 服务器(当前生产服务器)上的相同查询:
analyze_count | autoanalyze_count | count
---------------+-------------------+-------
0 | 13 | 3
0 | 226 | 1
0 | 1 | 31
0 | 5 | 6
0 | 21 | 2
0 | 16 | 2
0 | 601 | 1
0 | 8 | 1
0 | 20 | 1
0 | 4 | 2
0 | 9 | 2
0 | 10 | 2
0 | 12 | 1
0 | 7 | 2
0 | 41 | 1
0 | 2 | 11
0 | 6 | 1
0 | 3 | 8
0 | 731 | 1
0 | 39 | 1
0 | 11 | 1
0 | 0 | 99
0 | 50 | 1
0 | 66 | 1
0 | 241 | 1
0 | 14 | 2