Sergio Medeiros Santi escreveu: > Pessoal, vou responder meu próprio e-mail para evitar responder um a um. > Desde já o meu obrigado a todos. > > Eu particularmente gosto muito deste trabalho investigativo. Normalmente > quando descobrimos o que houve percebemos que é possível usar a > descoberta em outros pontos com expressivos resultados. Infelizmente o > PG anda tem alguns mistérios a resolver. O principal deles é desenvolver > um configurador que reuna informações sobre o hardware e sugira uma > configuração razoável. Isto teria me ajudado bastante quando comecei com > o PG. Pelo que olhei das apresentações do PGCon a coisa continua mais ou > menos igual, não existe ciência nisto, mas alguma recomendações (poucas > infelizmente). > > Bem voltando ao assunto. Eu não eliminei a constraint e a recriei porque > acredito que ela sonsumirá o mesmo tempo que levou no restore. > Configurei o postgres.conf para registrar tudo com mais de 500 ms e a > criação desta constraint está lá, bem clara, com os valores que forneci > anteriormente. > > Seguem algumas respostas a perguntas que me foram feitas: > > - Dickson. Não há nada rodando no servidor, além do restore. O servidor > está dedicado a este teste. > > - Cláudio. Não testei eliminar e recriar a constraint, mas também tenho > uma forte suspeita de que por algum motivo ele não esteja usando os > índices, uma vez que os dois são bastante explícitos, sendo um a pk. > > - Leandro. O tempo de backup é de 1 hora e de vacuum analyse de 4 > horas. Como o cliente fica 8 horas fechado o tempo está sendo > suficiente. Por outro lado eu tenho achado tão estimulante este caso que > estou preferindo dividir minhas pesquisas, conclusões e dúvidas com a > lista do que invocar algum guru. Contudo não tenho nenhum problema com > isso e já usei-os em alguma ocasiões onde não havia tempo para aprender > ou para resolver o problema. > > - Evandro. Não alterei o restrict para noaction porque achava que eram a > mesma coisa. Acho que vou testar isto antes de dropar a constraint e > recriá-la. > > - Fernando. Na verdade a estrategia de backup funciona bem o problema é > o restore. Felizmente não tive a necessidade de restaurar forçadamente o > banco, só não consigo engolir que de 14 horas, 12 foram consumidas > apenas por uma constraint. Não me parece ser uma referência circular > porque o treco demora mas termina e nada é registrado no log que pudesse > me levar a acreditar nisto. > > - Fábio. O autovacuum não é utilizado, mas diariamente é disparado um > backup seguido de um vacuum analyse. Originalmente era usado o vacuum > full, mas este foi abandonado porque em algumas oportundades ele não > terminava e o banco ficava travado para os usuário no dia seguinte. O > que tenho procurado fazer é um backup seguido de restore com alguma > periodicidade. Alias é este procedimento que me fez questionar esta > aplicação de constraint absurdamente lenta. > > - Luiz. Estou usando 32M em shared_buffers e 16M em maintenance_work_mem. > > Bem gente era isto vou usar todas estas considerações para novos teste > assim que tiver novidades eu posto. Outra coisa. Não sei se esta minha > idéia de reunir tudo num único e-mail foi muito boa. A idéia era > sintetizar tudo e evitar repetir considerações. > > Abraços a todos, > > Sergio Medeiros Santi > > > > Sergio Medeiros Santi escreveu: >> Pessoal: >> >> Ontem as 12 horas eu larguei a restauração novamente. As novas >> informações são as seguintes: >> >> Tempo total de restauração olhando pelos logs registrados: 14:03 (14 >> horas!) >> Tempo total da aplicação da constraint listada abaixo: 12:13 (12 horas!!!) >> >> Olha eu agradeço as sugestões de fazer backup "físico", das >> informações de tempo de outros usuários, mas eu continuo achando que >> tem algo errado no meu caso. Uma única constraint consumindo 12 horas >> de um total de 14 horas necessários! Acho demais. Outro fato >> interessante é que, dentro do que acompanhei da aplicação da >> constraint o consumo de processador é baixíssimo (menos de 10% em um >> Xeon 2.13), bem como apresenta baixo consumo de memória e baixa >> atividade de disco. Parece simplesmente que esta etapa da restauração >> está fazendo corpo mole, operação tartaruga. >> >> Também já citei o tamanho da base (30G ao fazer o backup e 21G após a >> restauração) e o número de registros das duas tabelas envolvidas >> (NotaItem com 20.000.000 de registros e Produto com 40.000 registros). >> Pelo nível técnico das discussões que acompanho nesta lista eu >> esperava algum questionamento, ou sugestão mais relacionado ao >> problemas, ou ao menos uma afirmação de que os tempos que citei são >> normais (o que não acredito). >> >> Alguém sabe me dizer o que justifica que uma única contraint consumir >> tanto tempo? A mesma tabela aplica outras constraints em muito menos >> tempo (NotaItem com 20.000.000 de registros e NotaFiscal com 1.400.000 >> registros) por exemplo, consome 4 minutos. Existe alguma forma de >> fazer um explain analyse de uma constraint? >> >> Pelo nível das discussões que tenho acompanhado estou estranhando a >> falta de comentários "profundos" sobre este caso que tenho estudado a >> uns 6 meses. Este caso me é bastante instigante e não consigo apenas >> me conformar com a situação. De tempos em tempo eu a retomo. Ou >> resolvo isto ou acho uma explicação plausível sobre o caso. Não >> pretendo concluir que este fato deva-se a "Vontade de Deus" e que devo >> me resignar. >> >> Não vou jogar isto para baixo do tapete! >> >> Sergio Medeiros Santi >> >> >> >> Sergio Medeiros Santi escreveu: >>> Gente: >>> >>> Essa discussão sobre o backup "físico" foi bem elucidativo, mas >>> voltando a origem da thread ... Ninguém, além de mim, acha estranho >>> que todo o processo de restore consuma 12 horas, sendo que uma única >>> contraint consuma 3/4 deste tempo e que o resto criação da estrutura, >>> carga dos dados, criação de indices, criação de todas as demais >>> constraints consuma apenas 1/4 do tempo? >>> >>> No exemplo abaixo eu já verifiquei e existe índice pelos dois campos >>> envolvidos um deles é a própria primary key. >>> >>> ALTER TABLE ONLY "NotaItem" ADD Constraint >>> "NotaItem_CodigoProduto_Produto_FK" FOREGN KEY >>> ("CodigoProdutoItem" REFERENCES >>> "Produto" ("CodigoInternoProduto") MATH FULL ON UPDATE RESTRICT >>> ON DELETE RESTRICT; >>> >>> Posso até estar enganado, mas tem que haver uma explicação para este >>> tempo absurdo ou alguma mancada muito grande. >>>
Ninguém comentou mas você tentou utilizar a opção -1 (ou --single-transaction)? http://www.postgresql.org/docs/8.2/interactive/app-pgrestore.html Osvaldo _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral