Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-03 Por tôpico Fabrízio de Royes Mello
On 02-03-2016 18:08, Euler Taveira wrote:
> On 02-03-2016 17:24, Fabrízio de Royes Mello wrote:
>> Pelo nome do temp file "pgsql_tmp7263.54" parece ser a reconstrução de
>> um data file (por ALTER TABLE, REINDEX, CREATE INDEX, VACUUM FULL, etc).
>> Porque no final ele tem o ".54" que indica o segmento de 1GB que está
>> sendo criado.
>>
> O 54 é um contador por sessão, ou seja, naquela conexão já foram criados
> 54 arquivos temporários. Portanto, não quer dizer que seja uma operação
> em um índice/tabela/visão materializada grande.
> 

Fazendo uns testes eu percebi que não tinha relação direta aos segmentos
de datafiles. No outro email com o caso de teste para m_w_m informei que
iria verificar. Obrigado pela informação.

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento



signature.asc
Description: OpenPGP digital signature
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-02 Por tôpico Euler Taveira
On 02-03-2016 17:24, Fabrízio de Royes Mello wrote:
> Pelo nome do temp file "pgsql_tmp7263.54" parece ser a reconstrução de
> um data file (por ALTER TABLE, REINDEX, CREATE INDEX, VACUUM FULL, etc).
> Porque no final ele tem o ".54" que indica o segmento de 1GB que está
> sendo criado.
> 
O 54 é um contador por sessão, ou seja, naquela conexão já foram criados
54 arquivos temporários. Portanto, não quer dizer que seja uma operação
em um índice/tabela/visão materializada grande.


-- 
   Euler Taveira   Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-02 Por tôpico Fabrízio de Royes Mello
On 02-03-2016 17:24, Fabrízio de Royes Mello wrote:
> 
> [...corte...]
> 
> Porque no final ele tem o ".54" que indica o segmento de 1GB que está
> sendo criado.
> 

Um detalhe, não verifiquei se essa informação acima é verdadeira... vou
dar uma olhada e em seguida confirmo 100%.


> Veja nos logs qual comando está produzindo esse arquivo temporário.
> Provável sim que vc precise aumentar o m_w_m.
> 

Só para demonstrar um caso de teste de geração de "temp files" pelo
"VACUUM FULL".

fabrizio=# CREATE TABLE foo(id SERIAL PRIMARY KEY, name VARCHAR(100));
CREATE TABLE
fabrizio=# INSERT INTO foo(name) SELECT 'Name '||id FROM
generate_series(1, 10) AS id;
INSERT 0 10
fabrizio=# INSERT INTO foo(name) SELECT 'Name '||id FROM
generate_series(1, 10) AS id;
INSERT 0 10
fabrizio=# INSERT INTO foo(name) SELECT 'Name '||id FROM
generate_series(1, 10) AS id;
INSERT 0 10
fabrizio=# \dt+ foo
   List of relations
 Schema | Name | Type  |  Owner   | Size  | Description
+--+---+--+---+-
 public | foo  | table | fabrizio | 13 MB |
(1 row)

fabrizio=# SET client_min_messages TO log;
SET
fabrizio=# SET log_temp_files TO 0;
SET
fabrizio=# SET maintenance_work_mem TO '1MB';
SET
fabrizio=# VACUUM FULL foo;
LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp13510.3", size 6004736
STATEMENT:  VACUUM FULL foo;
LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp13510.3", size 6004736
VACUUM


Se ajustar o maintenance_work_mem ele não precisa do disco.

fabrizio=# SET maintenance_work_mem TO '32MB';
SET
fabrizio=# VACUUM FULL foo;
VACUUM


Só para demonstrar a todos que não é "apenas" o "work_mem" que
influencia na geração de arquivos temporários no PostgreSQL.

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento



signature.asc
Description: OpenPGP digital signature
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-02 Por tôpico Fabrízio de Royes Mello
On 01-03-2016 11:30, Luiz Henrique wrote:
> Pessoal,
> 
> Temos uma aplicação JBOSS que frequentemente apresenta a mensagem de log
> conforme abaixo. As vezes causa lentidão no uso da aplicação. Desconfio
> que o parâmetro maintenance_work_mem esteja "tímido", muito pequeno.
> Gostaria da sugestão dos colegas, obrigado!
> 
> *** log do postgresql
> 
> LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp7263.54", size 1622016
> 
> *** log da aplicação JBOSS
> 
> [org.hibernate.util.JDBCExceptionReporter] (ajp-172.24.2.38-8209-22) SQL
> Warning: 0, SQLState: 0
> [org.hibernate.util.JDBCExceptionReporter] (ajp-172.24.2.38-8209-22)
> temporary file: path "base/pgsql_tmp/pgsql_tmp10141.12", size 1622016
> 
> *** parametro do postgresql.conf
> 
> maintenance_work_mem = 512MB   
> 

A GUC maintenance_work_mem é utilizada para atividades como criar
índices e vacuum. Tais atividades também geram arquivos temporários.

Pelo nome do temp file "pgsql_tmp7263.54" parece ser a reconstrução de
um data file (por ALTER TABLE, REINDEX, CREATE INDEX, VACUUM FULL, etc).
Porque no final ele tem o ".54" que indica o segmento de 1GB que está
sendo criado.

Veja nos logs qual comando está produzindo esse arquivo temporário.
Provável sim que vc precise aumentar o m_w_m.

Att,

-- 
   Fabrízio de Royes Mello Timbira - http://www.timbira.com.br/
   PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento



signature.asc
Description: OpenPGP digital signature
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-01 Por tôpico Cleiton Luiz Domazak
2016-03-01 11:57 GMT-03:00 Vinícius Aquino do Vale :

>
> Em 1 de março de 2016 11:30, Luiz Henrique 
> escreveu:
>
>> *** log do postgresql
>>
>> LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp7263.54", size 1622016
>>
>
> Julgue aumentar o parametro work_mem, o sistema usou (1622016) de arquivo
> temporário.
>
> Faça uma analise no ambiente para definir um tamanho a ser aumentado,
> lembrando que cada conexão utilizará o valor definido no parâmetro, caso
> seja consultas especificas utilize o SET work_mem= XMB para a transação ou
> para o usuário que faz a consulta.
>
> Att,
>

Acredito que você tenha se confundido nos parâmetros, maintenance_work_mem
é utilizado nas função de manutenção do banco, como Vacuum, Alter table,
create index e por ai vai, já o work_mem que foi comentado é o que você
precisa, que é o responsável por operações de sort e afins, e realmente é
um valor fixo por conexão, o que pode fazer com que o seu servidor não
aguente, caso você utilize um valor muito alto, mas que também se tiver
muito baixo, irá utilizar disco, e é o que não queremos.

Não existe um valor mágico, como é um parâmetro que pode ser alterado com o
banco no ar, você pode ir testando e aumentando gradativamente, até que
chegue em um valor razoável e que não afete a disponibilidade de memória do
servidor.

Mas também pode usar a formula do Jeferson para verificar se o valor não
irá afetar negativamente.

>
>
> ___
> pgbr-geral mailing list
> pgbr-geral@listas.postgresql.org.br
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-01 Por tôpico Vinícius Aquino do Vale
Em 1 de março de 2016 11:30, Luiz Henrique 
escreveu:

> *** log do postgresql
>
> LOG:  temporary file: path "base/pgsql_tmp/pgsql_tmp7263.54", size 1622016
>

Julgue aumentar o parametro work_mem, o sistema usou (1622016) de arquivo
temporário.

Faça uma analise no ambiente para definir um tamanho a ser aumentado,
lembrando que cada conexão utilizará o valor definido no parâmetro, caso
seja consultas especificas utilize o SET work_mem= XMB para a transação ou
para o usuário que faz a consulta.

Att,
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Re: [pgbr-geral] parametro maintenance_work_mem

2016-03-01 Por tôpico Jeferson Santana
Luiz, 

Esse parâmetro é um limitado por conexão, provavelmente essa conexão do JBOSS 
consumiu mais do que o limite de 512MB, o ideal é multiplicar esse valor (512Mb 
* max_connections) pra menssurar a quantidade máxima de memória que poderá ser 
consumida, esse valor não deve ser superior a quandidade de memória RAM - 
buffer_cache do seu servidor. 

-- 
Atenciosamente, 

Jeferson Lucas da Costa Santana 


- Mensagem original -

De: "Luiz Henrique"  
Para: "Comunidade PostgreSQL Brasileira"  
Enviadas: Terça-feira, 1 de março de 2016 11:30:57 
Assunto: [pgbr-geral] parametro maintenance_work_mem 

Pessoal, 

Temos uma aplicação JBOSS que frequentemente apresenta a mensagem de log 
conforme abaixo. As vezes causa lentidão no uso da aplicação. Desconfio que o 
parâmetro maintenance_work_mem esteja "tímido", muito pequeno. Gostaria da 
sugestão dos colegas, obrigado! 

*** log do postgresql 

LOG: temporary file: path "base/pgsql_tmp/pgsql_tmp7263.54", size 1622016 

*** log da aplicação JBOSS 

[org.hibernate.util.JDBCExceptionReporter] (ajp-172.24.2.38-8209-22) SQL 
Warning: 0, SQLState: 0 
[org.hibernate.util.JDBCExceptionReporter] (ajp-172.24.2.38-8209-22) temporary 
file: path "base/pgsql_tmp/pgsql_tmp10141.12", size 1622016 

*** parametro do postgresql.conf 

maintenance_work_mem = 512MB 


-- 
Atenciosamente, 

Luiz Henrique 



___ 
pgbr-geral mailing list 
pgbr-geral@listas.postgresql.org.br 
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral