Re: [pgbr-geral] parametro maintenance_work_mem
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
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
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
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 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
Em 1 de março de 2016 11:30, Luiz Henriqueescreveu: > *** 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
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