Em 9 de novembro de 2012 12:54, Renato Ricci <renatoricc...@gmail.com>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 pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral