FANTÁSTICO Fabrízio!

Executei seu select, ele me retornou mais de 400MB FREE, ou seja.. não
utilizados.. Caracas! Vou tomar providências...

Muito obrigado a todos que contribuíram com essa thread!
Valeu!

Renato


Em 9 de novembro de 2012 13:03, Fabrízio de Royes Mello <
[email protected]> escreveu:

>
> Em 9 de novembro de 2012 12:54, Renato Ricci 
> <[email protected]>escreveu:
>
>> Após eu carregar a contrib pg_buffercache em meu banco, executei um
>> select que está na página oficial do PostgreSQL (
>> http://www.postgresql.org/docs/9.1/static/pgbuffercache.html ):
>>
>> select sum ( buffers)
>>       from (SELECT c.relname, count(*) AS buffers
>>              FROM pg_buffercache b INNER JOIN pg_class c
>>              ON b.relfilenode = pg_relation_filenode(c.oid) AND
>>                 b.reldatabase IN (0, (SELECT oid FROM pg_database
>>                                       WHERE datname = current_database()))
>>              GROUP BY c.relname
>>              ORDER BY 2 DESC)a;
>>
>> o resultado foi: 9834
>> ou seja... há 9.834 buffer carregados na memória.. multiplicando por 8k
>> (que é o tamanho de cada buffer), tenho 78.672k ou seja.. +- 78 megas..
>> Seria esses 78 MB o tamanho do banco em memória? ou seja.. se tenho
>> shared_buffers setado para 512MB, podemos dizer que no momento atual estou
>> dedicando muito mais memória do que realmente preciso?
>>
>>
> Exatamente... e provavelmente o seu PostgreSQL está sendo penalizado por
> causa disso, pois cada operação que ele realiza ele varre *toda* a shared
> memory (shared_buffers), e se vc está alocando apenas 78Mb dos 512Mb que
> reservou, então ele está disperdiçando recursos nessa varredua que é, no
> mínimo, inútil.
>
> O select abaixo eu uso para ver a quantidade de shared memory alocada e
> não alocada:
>
> SELECT datname,
>        CASE
>          WHEN relfilenode IS NOT NULL THEN
>            'ALLOCATED'
>          ELSE
>            'FREE'
>        END,
>        pg_size_pretty(count(*) * current_setting('block_size')::integer)
> AS size
>   FROM pg_buffercache b
>        LEFT JOIN pg_database d on d.oid = b.reldatabase
>  GROUP BY 1, 2;
>
> Um ponto importante, um select na "pg_buffercache" é uma operação muito
> *cara* porque ele precisa bloquear todas as páginas para poder inspecionar
> e devolver o resultado, e isso quer dizer que todas as operações que estão
> sendo executadas irão ficar esperando esse select, então *use com
> moderação*.
>
> Att,
>
> --
> Fabrízio de Royes Mello
> Consultoria/Coaching PostgreSQL
> >> Blog sobre TI: http://fabriziomello.blogspot.com
> >> Perfil Linkedin: http://br.linkedin.com/in/fabriziomello
> >> Twitter: http://twitter.com/fabriziomello
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a