Recentemente, encontrei um problema estranho ao migrar do PG 9.4 => 11
Eu repliquei o servidor de produção do PG 9.4 para o PG 11 usando pglogical
. Tudo funcionou bem, exceto que descobrimos que algumas consultas complexas demoravam dezenas de segundos no servidor PG 11, enquanto no servidor 9.4 demoravam menos de um segundo.
Acontece que a execução ANALYZE
no novo servidor corrigiu as consultas lentas. Então, eu verifiquei $PGDATA/pg_stat
e $PGDATA/pg_stat_tmp
descobri que eles estavam vazios em ambos os servidores!
Onde o PG armazena as estatísticas? (Pergunta de acompanhamento - não pglogical
coleta estatísticas enquanto está replicando?)
Editar/acompanhar:
Saída da consulta no pg_stat_user_tables
novo servidor 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)
Mesma consulta no servidor PG 9.4 antigo (servidor de produção atual):
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