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
