> O que sai desta consulta, igualmente nos dois servidores: > SELECT attname, inherited, n_distinct, > array_to_string(most_common_vals, E'\n') as most_common_vals > FROM pg_stats > WHERE tablename = 'sua_tabela'; > > Note que você precisa colocar o nome da tabela em 'sua_tabela' > (desculpe, você cortou nesta resposta e eu já apaguei da minha caixa de > entrada, não posso buscar agora no histórico da lista). > > > *MASTER*: > > attname | inherited | n_distinct | most_common_vals > ------------------+-----------+-------------+-------------------------------- > id | f | -1 | > cpf | f | -1 | > nome | f | 1.17187e+06 | MARIA JOSE DA SILVA > + > | | | MARIA > APARECIDA DOS SANTOS + > | | | ANTONIO > DOS SANTOS + > /(lista mais alguns nomes, cortei pra não ficar muito grande)/ > nascimento | f | 27232 | 1981-04-15 > + > | | | > 1963-10-12 + > | | | > 1971-10-30 + > | | | > 1981-07-13 + > | | | > 1981-09-01 + > /Depois as outras colunas:/ > nome_mae | f | 39019 | > + > cidade | f | 2878 | SAO PAULO > + > estado | f | 27 | SP > + > cep | f | 33610 | 34000-000 > + > regiao_fiscal | f | 10 | 8 > + > > / > / > *SLAVE:* > / > / > id | f | -1 | > cpf | f | -1 | > nome | f | 1.37819e+06 | MARIA APARECIDA DA > SILVA + > | | | ANA > PAULA DA SILVA + > | | | MARIA > JOSE DOS SANTOS + > | | | JOSE > ANTONIO DA SILVA + > /(lista mais alguns nomes, cortei pra não ficar muito grande)/ > nascimento | f | 27230 | 1966-06-10 > + > | | | > 1966-10-18 + > | | | > 1973-08-08 + > | | | > 1975-10-20 + > /Depois as outras colunas:/ > nome_mae | f | 40049 | > + > cidade | f | 2917 | SAO PAULO > + > estado | f | 27 | SP > + > cep | f | 34440 | 36880-000 > + > regiao_fiscal | f | 10 | 8 > + > > > / > /
Note que a distribuição estatística dos nomes, justamente a coluna que te interessa, é diferente nos dois servidores. Eu não sei o que faz a sua função, que você utilizou para os índices, mas estou considerando que ela faz um tratamento simples qualquer para os nomes envolvidos, uma vez que o índice é útil em um dos casos. No seu caso, aumentar a quantidade de pontos de coleta estatística para essa tabela pode ajudar: https://www.postgresql.org/docs/current/static/runtime-config-query.html#GUC-DEFAULT-STATISTICS-TARGET A replicação por Slony *não* garante que as tabelas de origem e destino estejam na mesma ordem, logo, o coletor de estatísticas vai utilizar linhas diferentes como amostra. Ao aumentar a quantidade de amostras, você terá estatísticas um pouco mais próximas entre os dois servidores, elas nunca serão, porém, iguais. Veja se isso te ajuda, senão, no caso dessa sua consulta em particular, fazer o SET random_page_cost =1 na sua transação, antes de executá-la, pode ser um caso particular a considerar. Você pode também tentar utilizar o comando CLUSTER nessa tabela para ordená-la pelo índice desejado, note que isso vai te acarretar um lock exclusivo na tabela para reordená-la, e após novos INSERT a operação já é perdida. Se todo o seu banco é replicado, não só algumas tabelas, considere usar a replicação nativa, assim, as estatísticas em ambos os servidores serão sempre iguais. []s Flavio Gurgel _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
