Deliane,

uma outra boa prática é verificar os coletores do postgresql para verificar
o gargalo do seu banco de dados:

http://pgdocptbr.sourceforge.net/pg80/monitoring-stats.html

Atenciosamente
Eduardo Rodrigues

Em 8 de fevereiro de 2013 12:15, Eduardo Rodrigues
<[email protected]>escreveu:

>  3. Servidor sentando - load average alto (Deliane Andrade)
>
> Servidor de banco de dados ele tenta colocar toda a informação em mémoria
> para poder ter um tempo de resposta mais eficiente.
>
> O seu servidor esta utilizando um storage (disco) 1TB, ai vem as perguntas:
> - há um array de discos para formar esse storage de um 1TB? Se sim qual o
> nível RAID que você esta utilizando?
> - você consegue analisar o IO de disco atual do seu servidor?
> - As ferramentas PgFouine e pgbadger irão te auxiliar para fazer analise
> de log e demonstrar quais as operações que esão levando maior tempo de
> execução.
>
> Mas o Load pode ter aumentando por causa do IO de disco. Utilize as
> ferramentas que citei no ultimo ítem você poderá verificar o que alterar no
> arquivo postgresql.conf
>
> Em 8 de fevereiro de 2013 11:48, <
> [email protected]> escreveu:
>
> Send pgbr-geral mailing list submissions to
>>         [email protected]
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>> or, via email, send a message with subject or body 'help' to
>>         [email protected]
>>
>> You can reach the person managing the list at
>>         [email protected]
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of pgbr-geral digest..."
>>
>>
>> Tópicos de Hoje:
>>
>>    1. ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS, UPDATES
>>       (Wellington Openheimer)
>>    2. Re: ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS, UPDATES
>>       (Jean Pereira)
>>    3. Servidor sentando - load average alto (Deliane Andrade)
>>    4. Function atualiza valor com nulo (Edson - Lista)
>>    5. Re: Function atualiza valor com nulo (Wolak)
>>    6. Re: Servidor sentando - load average alto (Euler Taveira)
>>
>>
>> ----------------------------------------------------------------------
>>
>> Message: 1
>> Date: Fri, 8 Feb 2013 09:47:09 -0200
>> From: Wellington Openheimer <[email protected]>
>> Subject: [pgbr-geral] ÍNDICES EM TABELAS QUE RECEBEM MUITOS INSERTS,
>>         UPDATES
>> To: [email protected]
>> Message-ID:
>>         <CAMXtFXECBNQjsoncuJA67KbJJV4NZsG3p1ctDU=
>> [email protected]>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Olá pessoal,
>>
>> Temos uma tabela que em um determinado tempo ela é muito consultada e ao
>> mesmo tempo sofre muitos inserts e updates.
>>
>> Acontece que a consulta é bem complexa e está ficando cada vez mais lenta
>> com o aumento do número de dados.
>>
>> Decidimos então testar a criação de uns índices com os principais campos
>> nas cláusulas WHERE das consultas mais lentas.
>>
>> A consulta ficou bem mais rápida, mas estamos receosos se estes índices
>> irão deixar mais lenta a inserção e update de dados
>> pois esses comandos teriam então que inserir no índice também.
>>
>>
>> Obs.:
>>
>> Criamos 2 índices compostos btree.
>>  (campo1, campo2, campo3)
>>  (campo4, campo2, campo3)
>>
>> campo2 e campo3 fazem parte da chave da tabela que possui 5 campos chave.
>>
>> Detalhe: temos 2 consultas muito pesadas que usam no where campo1, campo2
>> e
>> campo3 e campo4, campo2 e campo3 respectivamente.
>>
>>
>> Seremos muito grato se puderem nos ajudar.
>>
>>
>> att,
>>
>> Wellington
>> -------------- Próxima Parte ----------
>> Um anexo em HTML foi limpo...
>> URL:
>> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/bcdef8f0/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 2
>> Date: Fri, 08 Feb 2013 10:23:53 -0200
>> From: Jean Pereira <[email protected]>
>> Subject: Re: [pgbr-geral] ÍNDICES EM TABELAS QUE RECEBEM MUITOS
>>         INSERTS, UPDATES
>> To: Comunidade PostgreSQL Brasileira
>>         <[email protected]>
>> Message-ID: <[email protected]>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Bom dia.
>>
>> Bom, tenho uma situação muito parecida por aqui.
>> Temos um banco de dados que nasceu no access a muitos e muitos anos
>> atrás, foi para sqlserver e a muitos anos está no postgresql.
>>
>> Trabalhamos com sistema de saúde publica, e nossas tabelas de produção
>> (digo os dados de procedimentos executados e tal), são uma "porcaria", e
>> para alterar essas tabelas é o "bixo".
>>
>> Minha solução foi adotar esses índices pelo qual você referiu, mas eu
>> não sei essa informação também.
>> Mas, pelo que constatamos por aqui, a melhora foi muito significativa, e
>> até agora não detectamos problemas perante aos índices.
>>
>> Abraço.
>>
>> On 02/08/2013 09:47, Wellington Openheimer wrote:
>> > Olá pessoal,
>> >
>> > Temos uma tabela que em um determinado tempo ela é muito consultada e
>> > ao mesmo tempo sofre muitos inserts e updates.
>> >
>> > Acontece que a consulta é bem complexa e está ficando cada vez mais
>> > lenta com o aumento do número de dados.
>> >
>> > Decidimos então testar a criação de uns índices com os principais
>> > campos nas cláusulas WHERE das consultas mais lentas.
>> >
>> > A consulta ficou bem mais rápida, mas estamos receosos se estes
>> > índices irão deixar mais lenta a inserção e update de dados
>> > pois esses comandos teriam então que inserir no índice também.
>> >
>> >
>> > Obs.:
>> >
>> > Criamos 2 índices compostos btree.
>> >  (campo1, campo2, campo3)
>> >  (campo4, campo2, campo3)
>> >
>> > campo2 e campo3 fazem parte da chave da tabela que possui 5 campos
>> chave.
>> >
>> > Detalhe: temos 2 consultas muito pesadas que usam no where campo1,
>> > campo2 e campo3 e campo4, campo2 e campo3 respectivamente.
>> >
>> >
>> > Seremos muito grato se puderem nos ajudar.
>> >
>> >
>> > att,
>> >
>> > Wellington
>> >
>> >
>> >
>> > _______________________________________________
>> > pgbr-geral mailing list
>> > [email protected]
>> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>> -------------- Próxima Parte ----------
>> Um anexo em HTML foi limpo...
>> URL:
>> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/7d6552a8/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 3
>> Date: Fri, 8 Feb 2013 09:27:57 -0300
>> From: Deliane Andrade <[email protected]>
>> Subject: [pgbr-geral] Servidor sentando - load average alto
>> To: Comunidade PostgreSQL Brasileira
>>         <[email protected]>
>> Message-ID:
>>         <
>> caoa7u111vnquamb0-vv-wnazhgdnwjyiy93zdhk7fhyivuc...@mail.gmail.com>
>> Content-Type: text/plain; charset="iso-8859-1"
>>
>> Bom dia pessoal!
>> Estamos com problema em um servidor Xenon de 16 núcleos com 16G de RAM. HD
>> SATA DE 1T.
>> O postgresql é o 8.4.4
>>
>>
>> O load average da máquina está da forma abaixo(sendo que já chegou até a
>> 300) :
>>
>> top - 09:20:09 up 2 days,  2:12,  6 users,  load average: 96.90, 116.55,
>> 118.03
>> Tasks: 488 total,   2 running, 486 sleeping,   0 stopped,   0 zombie
>> Cpu(s):  3.2%us,  0.7%sy,  0.0%ni, 56.5%id, 39.7%wa,  0.0%hi,  0.0%si,
>> 0.0%st
>> Mem:  16458500k total, 14891364k used,  1567136k free,    19108k buffers
>> Swap:  9765616k total,     8208k used,  9757408k free, 13512336k cached
>>
>> A configuração do postgresql.conf atual é a seguinte: (sendo que mudaram a
>> mesma aleatoriamente)
>>
>> listen_addresses = '*'                  # what IP address(es) to listen
>> on;
>>                                                    # comma-separated list
>> of addresses;
>>                                                    # defaults to
>> 'localhost', '*' = all
>>                                                   # (change requires
>> restart)
>> port = 5432                                # (change requires restart)
>> max_connections = 900             # (change requires restart)
>>
>> shared_buffers = 512000kB
>> work_mem=15729kB
>> maintenance_work_mem = 2GB
>> wal_buffers = 64kB
>> checkpoint_segments =300
>> effective_cache_size = 14680060kB
>>
>> Esse servidor é acessado por três aplicações diferentes que executam
>> muitas
>> consultas e updates , e alguns poucos deletes.
>> A base encontra-se hoje com 83G de tamanho.
>> Já rodei o vacuum full.
>> Já fizeram o reindex.
>> Enfim, os sistemas estão muito lentos, quase parando.
>> Alguém tem alguma sugestão de alteração na configuração para que a
>> performance melhore?
>>
>> Att,
>>   Deliane Andrade
>> -------------- Próxima Parte ----------
>> Um anexo em HTML foi limpo...
>> URL:
>> http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20130208/f70b4ac7/attachment-0001.htm
>>
>> ------------------------------
>>
>> Message: 4
>> Date: Fri, 08 Feb 2013 10:52:03 -0200
>> From: Edson - Lista <[email protected]>
>> Subject: [pgbr-geral] Function atualiza valor com nulo
>> To: [email protected]
>> Message-ID: <[email protected]>
>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>
>> Bom dia pessoal,
>>
>> Não sei que esta errado com a minha function, ao fazer o update ela
>> atualizando os valor com null.
>> O que pode estar errado?,
>> Segue abaixo:
>>
>> CREATE OR REPLACE FUNCTION public.baixa_saldo_conta_pagar (
>> )
>> RETURNS trigger AS
>> $body$
>>       BEGIN
>>          IF (TG_OP = 'INSERT') THEN
>>             UPDATE contas SET
>>             vlr_saldo_sai = (vlr_saldo_sai + NEW.vlr_pgto),
>>             vlr_saldo = (vlr_saldo - NEW.vlr_pgto),
>>             dt_usualt = now(),
>>             nm_usualt = new.nm_usualt
>>             WHERE cd_conta = NEW.cd_conta;
>>             RETURN NEW;
>>          END IF;
>>        IF (TG_OP = 'UPDATE') THEN
>>            UPDATE contas
>>            SET vlr_saldo_sai = ((vlr_saldo_sai - OLD.vlr_pgto) +
>> NEW.vlr_pgto),
>>            vlr_saldo = ((vlr_saldo + OLD.vlr_pgto) - NEW.vlr_pgto),
>>            nm_usualt = new.nm_usualt
>>            WHERE cd_conta = NEW.cd_conta;
>>            RETURN NEW;
>>        END IF;
>>        IF (TG_OP = 'DELETE') THEN
>>            UPDATE contas
>>          set vlr_saldo_sai = (vlr_saldo_sai - OLD.vlr_pgto),
>>                  vlr_saldo = (vlr_saldo + OLD.vlr_pgto),
>>                  dt_usualt = OLD.dt_usualt,
>>                  nm_usualt = OLD.nm_usualt
>>              where cd_conta = OLD.cd_conta;
>>              RETURN OLD;
>>        END IF;
>>       END;
>> $body$
>> LANGUAGE 'plpgsql'
>> VOLATILE
>> CALLED ON NULL INPUT
>> SECURITY INVOKER
>> COST 100;
>>
>> []'s
>>
>> Edson
>>
>>
>> ------------------------------
>>
>> Message: 5
>> Date: Fri, 08 Feb 2013 11:23:18 -0200
>> From: Wolak <[email protected]>
>> Subject: Re: [pgbr-geral] Function atualiza valor com nulo
>> To: Comunidade PostgreSQL Brasileira
>>         <[email protected]>
>> Message-ID: <[email protected]>
>> Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>>
>>
>> Em 08/02/2013 10:52, Edson - Lista escreveu:
>> > Bom dia pessoal,
>> >
>> > Não sei que esta errado com a minha function, ao fazer o update ela
>> > atualizando os valor com null.
>> > O que pode estar errado?,
>> > Segue abaixo:
>> >
>> > CREATE OR REPLACE FUNCTION public.baixa_saldo_conta_pagar (
>> > )
>> > RETURNS trigger AS
>> > $body$
>> >        BEGIN
>> >           IF (TG_OP = 'INSERT') THEN
>> >              UPDATE contas SET
>> >              vlr_saldo_sai = (vlr_saldo_sai + NEW.vlr_pgto),
>> >              vlr_saldo = (vlr_saldo - NEW.vlr_pgto),
>> >              dt_usualt = now(),
>> >              nm_usualt = new.nm_usualt
>> >              WHERE cd_conta = NEW.cd_conta;
>> >              RETURN NEW;
>> >           END IF;
>> >         IF (TG_OP = 'UPDATE') THEN
>> >             UPDATE contas
>> >             SET vlr_saldo_sai = ((vlr_saldo_sai - OLD.vlr_pgto) +
>> > NEW.vlr_pgto),
>> >             vlr_saldo = ((vlr_saldo + OLD.vlr_pgto) - NEW.vlr_pgto),
>> >             nm_usualt = new.nm_usualt
>> >             WHERE cd_conta = NEW.cd_conta;
>> >             RETURN NEW;
>> >         END IF;
>> >         IF (TG_OP = 'DELETE') THEN
>> >             UPDATE contas
>> >           set vlr_saldo_sai = (vlr_saldo_sai - OLD.vlr_pgto),
>> >                   vlr_saldo = (vlr_saldo + OLD.vlr_pgto),
>> >                   dt_usualt = OLD.dt_usualt,
>> >                   nm_usualt = OLD.nm_usualt
>> >               where cd_conta = OLD.cd_conta;
>> >               RETURN OLD;
>> >         END IF;
>> >        END;
>> > $body$
>> > LANGUAGE 'plpgsql'
>> > VOLATILE
>> > CALLED ON NULL INPUT
>> > SECURITY INVOKER
>> > COST 100;
>> >
>> > []'s
>> >
>> > Edson
>> > _______________________________________________
>> > pgbr-geral mailing list
>> > [email protected]
>> > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>> >
>>
>> Provavelmente existe um valor nulo, utilize o COALESCE(vlr_saldo,0) +
>> COALESCE(old.vlr_pgto,0).
>>
>>
>>
>>
>> ------------------------------
>>
>> Message: 6
>> Date: Fri, 08 Feb 2013 11:50:54 -0200
>> From: Euler Taveira <[email protected]>
>> Subject: Re: [pgbr-geral] Servidor sentando - load average alto
>> To: Comunidade PostgreSQL Brasileira
>>         <[email protected]>
>> Message-ID: <[email protected]>
>> Content-Type: text/plain; charset=ISO-8859-1
>>
>> On 08-02-2013 10:27, Deliane Andrade wrote:
>> > O postgresql é o 8.4.4
>> >
>> Atualize a versão (já estamos na 8.4.16) -- há inúmeras correções de bugs
>> e
>> segurança.
>>
>> > O load average da máquina está da forma abaixo(sendo que já chegou até
>> a 300) :
>> >
>> > top - 09:20:09 up 2 days,  2:12,  6 users,  load average: 96.90,
>> 116.55, 118.03
>> > Tasks: 488 total,   2 running, 486 sleeping,   0 stopped,   0 zombie
>> > Cpu(s):  3.2%us,  0.7%sy,  0.0%ni, 56.5%id, 39.7%wa,  0.0%hi,  0.0%si,
>>  0.0%st
>> >
>>                                             ^^^^^^^^^^^
>> Você precisa aumentar a capacidade de I/O de seu servidor.
>>
>> > max_connections = 900             # (change requires restart)
>> >
>> Valor muito alto.
>>
>> > shared_buffers = 512000kB
>> valor muito baixo.
>>
>> > work_mem=15729kB
>> > maintenance_work_mem = 2GB
>> > wal_buffers = 64kB
>> valor baixo.
>>
>> > checkpoint_segments =300
>> valor alto.
>>
>> > Enfim, os sistemas estão muito lentos, quase parando.
>> > Alguém tem alguma sugestão de alteração na configuração para que a
>> performance
>> > melhore?
>> >
>> Talvez você precise de uma consultoria para lhe indicar o que deve ser
>> melhorado no servidor, no PostgreSQL e quais são as rotinas de manutenção
>> adequadas.
>>
>>
>> --
>>    Euler Taveira de Oliveira - Timbira       http://www.timbira.com.br/
>>    PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento
>>
>>
>> ------------------------------
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>> Fim da Digest pgbr-geral, volume 50, assunto 10
>> ***********************************************
>>
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a