Fábio Rodriguez, obrigado pelo retorno. Apenas para ratificar então, o work_mem é por conexão, mas é um limitador apenas, não uma memória préalocada, ok?
E via banco não tem como monitorar o uso desta então? (tipo pg_stat_temp...) sds Fábio Gibon ----- Original Message ----- From: "Fábio Telles Rodriguez" <fabio.tel...@gmail.com> To: "Fábio Gibon - Comex System" <gi...@comexsystem.com.br>; "Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql.org.br> Sent: Monday, April 04, 2011 12:50 PM Subject: Re: [pgbr-geral] Dúvida sobre WORK_MEM Em 4 de abril de 2011 11:15, Fábio Gibon - Comex System <gi...@comexsystem.com.br> escreveu: > Pessoal, > por favor, vejam se o conceito que tenho de work_mem está correto: > > work_mem: é um limite de memória (apenas um limite, não é prealocada) para > operações de sort (order by, distinct, ...) antes de ter que utilizar > disco > para isto. É um valor total para o cluster, não por > client/session/transaction... Não está correto. O valor é um limite por conexão, não é global para o cluster. > > A minha dúvida é como consigo mensurar o uso da work_mem para saber se > está > super/sub dimensionada? Tem alguma view para isto? Uma forma simples de saber isso é criar uma tablespace temporário numa partição específica e monitorar o uso da partição. Sempre que uma operação for utilizar mais que o disponível em work_men, a sessão irá utilizar o disco, na partição especificada. Se você tiver muito I/O nesta partição, então poderá se beneficiar do aumento do WORK_MEM. Você também pode setar este parâmetro por sessão/usuário/base. Então, se você tem operações muito específicas que vão fazer um SORT muito grande, pode ajustar este parâmetro apenas neste momento e deixar o restante com o valor padrão. Uma forma de fazer um ajuste grosso neste parâmetro é verificar a quantidade de memória disponível logo após a inicialização do Postgres (após a alocação dos SHARED_BUFFERs) mas sem conexões ativas. Pegue o total de memória disponível e divida pelo número máximo de conexões em MAX_CONNECTIONS. Deste valor, pegue apenas uma fração, como 1/3 disso. EX: Memória total = 16GB. Após subir o PostgreSQL a memória livre é de 4GB. Se o seu MAX_CONNECTIONS estiver em 100, teremos: 4G/100 = 40MB. Você poderia utilizar com segurança algo entre 10MB e 20MB. > > abraços > > Fábio Henrique Gibon > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Atenciosamente, Fábio Telles Rodriguez blog: http://www.midstorm.org/~telles/ e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles _______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral