Tiago Valério escreveu:
> Basicamente o problema enfrentado esta numa function que tentei
> descrever abaixo ou em um update somente da tabela :
>  
Por que você não está utilizando junção das tabelas tabela_1 e tabela_2? A sua
função podia ser reduzida a um SELECT, um IF e um UPDATE; não substime vários
anos de pesquisa dos algoritmos de junção do SGBD e utilize junções.

Você não colocou as informações necessárias para descobrirmos o porquê da
lentidão. Um BEGIN; EXPLAIN minha_consulta; ROLLBACK; ajudaria visualizarmos o
problema. Mas suspeito que se tu reorganizares a sua função você já terá um
ganho considerável.

> 1-As tabelas1 e tabelas 2 possuem a mesma quantidade de registros (10
> milhoes);
> 2-Na analise do explain o resultado eh satisfatorio;
> 3-Analisando a taxa de acerto pela consulta abaixo eu tenho 95,25;
> select datname,(sum(blks_hit)/sum(blks_read+blks_hit)*100)::numeric(4,2)
> as taxa from pg_stat_database where datname in ('bd1') group by datname;
>  
Você precisa pegar a diferença, ou seja, medir dois intantes (antes e depois)
e calcular a diferença. Esses valores são incrementais. Eu não olharia os
dados do banco de dados e sim das tabelas (aka pg_statio_user_tables).

> 4-Quando a function entra na segunda consulta para trazer o valor found
> ele esta com uma demora, e na execucao do update tambem;
>  
Suspeito que talvez isso esteja relacionado a falta de índices mas como você
não mostrou as estruturas e nem o EXPLAIN das consultas fica difícil dizer algo.

> Obs!! Ainda nao consegui habilitar o log_checkpoints, ele cria o arquivo
> de log porem nao joga as informacoes dentro do mesmo, estou em anlise
> para saber o motivo.
>  
Você habilitou o logging_collector? Um reinício do postgresql é necessário.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a