2014-04-25 11:17 GMT-03:00 Fabrízio de Royes Mello <[email protected]> :
> O que pode estar ocorrendo é aquele $1 estar sendo substituido por algo > do tipo '0 or 1=1' e dai vai levar a um seqscan em toda tabela. > Impossível no caso, $1 tem que ser substituído por um valor absoluto, não parte de um comando. Além disso, um seqscan "puro" (sem ordenação, junção, agregação, etc.) não deveria gerar arquivos temporários. Eu desconfiei de bitmap-scan no início, mas depois me lembrei que este cara também não gera arquivos temporários. Junto com o pessoal do IRC, eu fiz uma lista de quais algoritmos poderiam gerar arquivos temporários, e chegamos aos seguintes: Sort, Materialize, CTEs, Hash Joins, Aggregate/GroupAggregate (com distinct/order by) e WindowAgg. Não vejo como nenhuma dessas operações poderia ser gerada pela consulta mencionada. Isso é realmente muito estranho, e sinceramente estou começando a suspeitar de algum bug, a dificuldade é como iremos "debugar" se não é facilmente reprodutível? Acho que o auto_explain pode mesmo nos ajudar muito nesse caso, mas temos que lembrar que a consulta tem que passar do tempo estipulado, acho bem possível se está gerando mesmo esses temp files, mas talvez tenhas que "ligar" para todos. Se possível, seria interessante diminuir o valor do log_min_duration_statements ou ainda "logar" tudo por um tempo (colocando zero), assim podemos pegar o valor do $1 e ainda debugar outros problemas. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
