[pgbr-geral] Saber quem esta usando uma tabela
Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? É que não posso ficar pedindo pra todos sair do sistema parando a empresa toda. Gostaria de minimizar esse problema ao precisar alterar uma tabela não muito importante. Essa tabela as vezes está sendo usado somente por uma pessoa. Marcelo Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Saber quem esta usando uma tabela
Em 1 de abril de 2013 11:19, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? Sim. -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Saber quem esta usando uma tabela
Em 1 de abril de 2013 11:19, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? Sim. Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero que seja brincadeira. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Saber quem esta usando uma tabela
Mesmo que não seja brincadeira, vou considerar que fui muito objetivo na questão, apesar de citar IP por exemplo, rsrsrs Estou vendo alguns comandos na web Será que pode-se fazer assim: if (tabela em uso) ignora ou altera tabela Mais ou menos isso que estava pensando Em 1 de abril de 2013 11:31, Jean Domingues ejdom...@yahoo.com.brescreveu: Em 1 de abril de 2013 11:19, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? Sim. Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero que seja brincadeira. ___ 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] Saber quem esta usando uma tabela
Em 1 de abril de 2013 11:35, Marcelo da Silva marc...@ig.com.br escreveu: Mesmo que não seja brincadeira, vou considerar que fui muito objetivo na questão, apesar de citar IP por exemplo, rsrsrs Estou vendo alguns comandos na web Será que pode-se fazer assim: if (tabela em uso) ignora ou altera tabela Mais ou menos isso que estava pensando Se você quer saber se é possível, a resposta é sim, mas se você quer saber como obter isto minha indicação é para que você busque no catalogo e nas estatísticas do banco pois eles são seus amigos. Veja pg_class [1], pg_locks [2] e pg_stat_activity [3], juntas você pode chegar ao que você procura. [1] http://www.postgresql.org/docs/current/static/catalog-pg-class.html [2] http://www.postgresql.org/docs/current/static/view-pg-locks.html [3] http://www.postgresql.org/docs/9.2/static/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Saber quem esta usando uma tabela
Em 1 de abril de 2013 11:31, Jean Domingues ejdom...@yahoo.com.br escreveu: Em 1 de abril de 2013 11:19, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? Sim. Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero que seja brincadeira. A pergunta foi objetiva, minha resposta também :) (e olha que, por ser primeiro de Abril, eu poderia ter dito 'não' ;) ) Mas sim, foi uma brincadeira mas com o intuito de obter uma segunda pergunta, mais elaborada e com um pouco mais de detalhes sobre o que ele realmente precisa. []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Saber quem esta usando uma tabela
rsrsr, valeu Dickson Em 1 de abril de 2013 11:49, Dickson S. Guedes lis...@guedesoft.netescreveu: Em 1 de abril de 2013 11:31, Jean Domingues ejdom...@yahoo.com.br escreveu: Em 1 de abril de 2013 11:19, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, as vezes preciso executar alterações numa tabela, e se ele estiver sendo usada não consigo. Tem como saber se aquela tabela está sendo usada e por quem (IP por exemplo) antes de executar a tal alteração ? Sim. Por que se dar ao trabalho de dar uma resposta inútil como esta? Espero que seja brincadeira. A pergunta foi objetiva, minha resposta também :) (e olha que, por ser primeiro de Abril, eu poderia ter dito 'não' ;) ) Mas sim, foi uma brincadeira mas com o intuito de obter uma segunda pergunta, mais elaborada e com um pouco mais de detalhes sobre o que ele realmente precisa. []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br ___ 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] Conversão de DB2 para Postgres
Em 31/03/13, Sanzio Carmosanzio.ca...@gmail.com escreveu: Amigos, Depois da ajuda de todos, consegui fazer funcionar. As explicações me ajudaram a refletir no que eu queria, que era calcular a data do ultimo dia da semana de acordo com o dia informado. Se quiser determinar a sexta-feira da semana então pode usar algo do tipo: bdteste=# SELECT CURRENT_DATE, date_trunc('week', CURRENT_DATE), (date_trunc('week', CURRENT_DATE)+interval '4 days')::date; date| date_trunc |date ++ 2013-04-01 | 2013-04-01 00:00:00-03 | 2013-04-05 (1 row) Lembrando que a semana vai de segunda a domingo, assim: bdteste=# SELECT (date_trunc('week', '2013-03-31'::date)+interval '4 days')::date; date 2013-03-29 (1 row) Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Desconsiderar maiúsculo/minúsculo em campos varchar
Boa tarde, alguns dias atrás, precisei que os campos varchar funcionassem como Case Insensitive, mas tudo que o pessoal me retornou foi algo como: select upper(c.nome_cli) from clientes c like upper(c.nome_cli), e um outro usuário me reportou que eu poderia utilizar o tipo de dado CITEXT, que no delphi não ficou legal. Foi então que por um acaso procurando uma outra coisa encontrei este artigo abaixo, caso alguém queira utilizar: http://www.postgresonline.com/journal/archives/24-Using-MS-Access-with-PostgreSQL.html PostgreSQL is case-sensitive One of the most annoying things for people coming from a Windows environment is that PostgreSQL is case-sensitive whereas MS Access in-general is not (except when querying case sensitive databases). Explaining this to users and training them on case sensitivity is just a lot of hassle, not to mention the time-loss of having to upper case things. Hopefully this will change in the future so that PostgreSQL supports different collation depending field by field similar to the way SQL Server 2005 does. Needless to say, when running a query in MS Access, one has three options: 1. Write your query along the lines of *upper(somefield) LIKE UCase('abc%')* and make sure you have a functional index on upper(somefield) 2. Use the custom data type such as *citext* which you need to compile yourself. - or Put functional upper(somefield) indexes on your common fields and use the freedom that PostgreSQL gives you to redefine varchar operators in your database by doing the below. NOTE that this gives you the benefit of not having to redefine varchar fields as citext or anything like that thus making it more portable to transfer back and forth between non-case sensitive dbs or use the same schema as non-case sensitive dbs. Note we couldn't do the below with *text* because that is defined high up and can not be overwritten. We can overwrite the behavior of varchars however because varchars get implicitly cast to text and use the text operators. By using PostgreSQL's operator overload feature, we can define special behavior for varchar when used in comparators. When Postgres sees there is such an operator, it will use that instead of cast varchar to text and using the default text operators. The downside is that this will not work with PostgreSQL text (NOTE: varchar in PostgreSQL/ANSI SQL maps to text in MS Access and text in PostgreSQL/ANSI maps to memo in MS Access - all very confusing) . In most cases this is a non-issue since most searches are done on short Access text fields rather than memo fields. *NOTE: Use with caution. We haven't thoroughly tested this technique to catch all the possible situations where it can go wrong. It seems to behave correctly from our naive tests.* - Doing the above allows us to define a query like this in MS Access - [image: Case insensitive search] Which yields: [image: Johns and Farns] - CREATE OR REPLACE FUNCTION ci_caseinsmatch(varchar, varchar) RETURNS boolean AS $$ SELECT UPPER($1)::text = UPPER($2)::text; $$ LANGUAGE sql IMMUTABLE STRICT;CREATE OPERATOR = ( PROCEDURE = ci_caseinsmatch, LEFTARG = varchar, RIGHTARG = varchar, COMMUTATOR = =, NEGATOR = );CREATE FUNCTION ci_like(varchar, varchar) RETURNS boolean AS $$ SELECT UPPER($1)::text LIKE UPPER($2)::text; $$ LANGUAGE sql;CREATE OPERATOR ~~( PROCEDURE = ci_like, LEFTARG = varchar, RIGHTARG = varchar, RESTRICT = likesel, JOIN = likejoinsel); And can now be written in SQL even in PgAdmin without all that messy upper lower stuff and still uses indexes if you have them defined on say upper(first_name) or doing range case-insensitive searches e.g. (customer.last_name between 'f' and 'h') : SELECT customer.* FROM customer WHERE customer.last_name Like 'Farns%' OR customer.first_name = 'Jim'; Which will give you all customers with first name Jim or last name like Farns. Best of all, if you put in a functional index on last name and first name like below, it will use those indexes when doing equality or between ranges etc.. Eu estou utilizando e até o momento está funcionando como eu queria. Acho que combinando o Unaccent ele também irá desconsiderar os acentos, mas isso não testei ainda. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração max_connections
Em 01-04-2013 15:04, Luiz Carlos L. Nogueira Jr. escreveu: Pessoal, Existe alguma forma de saber, dentro de um certo período, o máximo de conexões que efetivamente estão executando algo simultaneamente? Quando dou um top aparecem, no máximo, 10 processos do postgres. Isso quer dizer que, no máximo, tenho 10 processos simultâneos? As ferramentas do S.O. são uma ótima forma de fazer uma monitoração rápida do PostgreSQL. Considere que, dentre os 10 processos que você viu, alguns são processos fixos como o processo pai (antigo postmaster), o autovacuum lancher, o stats collector, entre outros. Pressione a tecla c quando estiver no top para visualizar o comando completo. Os processos conexão do PostgreSQL tem uma estrutura bem definida, mais ou menos asim: postgres: usuario banco_de_dados [IP] comando Onde comando por ser idle, ou seja, conexão aberta sem fazer nada. Veja aqui mais informações para a versão 9.2: http://www.postgresql.org/docs/9.2/static/monitoring-ps.html []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Configuração max_connections
2013/4/1 Luiz Carlos L. Nogueira Jr. lcnogueir...@gmail.com Pessoal, Existe alguma forma de saber, dentro de um certo período, o máximo de conexões que efetivamente estão executando algo simultaneamente? O seguinte comando pode ajudar: $ TABLE pg_stat_activity; Quando dou um top aparecem, no máximo, 10 processos do postgres. Isso quer dizer que, no máximo, tenho 10 processos simultâneos? Não, porque existem outros processos de sistema que pertencem ao postgres: bgwriter, logger, wal writter, vaccuum, checkpoints, ca... Por exemplo, em meu sistema, um comando como este: top -cu postgres retornaria 6 processos mesmo com o sistema em idle. Para acompanhamento periódico/histórico de transações e conexões use o utilitário pgBadger[1] que gera um relatório completo de transações e acessos no seu servidor. Outro tiro-no-pé que pode acontecer – e q não é tão raro assim – é quando o intrépido analista de negócio e/ou cliente solicita um número máximo de conexões para estimar crescimento, mas existe um gerenciador de fila (connection pooling) entre o SGBD e a aplicação. Isto trará números ainda mais imprecisos visto que conexões do banco podem gerenciar N requisições da aplicação. Como regra geral, entenda a arquitetura de seu ambiente. 1) http://dalibo.github.com/pgbadger/ Abraço! -Leo -- Leonardo Cezar http://www.postgreslogia http://postgreslogia.wordpress.com.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
Em 01-04-2013 15:44, Luiz Carlos L. Nogueira Jr. escreveu: Pessoal, Tenho essa situação no top, normalmente top - 15:31:38 up 10 days, 8:13, 4 users, load average: 8.64, 7.58, 6.75 Tasks: 348 total, 19 running, 329 sleeping, 0 stopped, 0 zombie Cpu(s): 99.1%us, 0.3%sy, 0.0%ni, 0.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 20548432k total, 20103744k used, 444688k free, 173956k buffers Swap: 522104k total, 452k used, 521652k free, 15943964k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 6793 postgres 16 0 4397m 1.4g 1.4g R 63.8 7.2 1:08.78 postgres: postgres bancox ipX(37472) SELECT 6812 postgres 16 0 4387m 1.2g 1.1g R 45.6 5.9 0:17.29 postgres: postgres bancox ipX(37491) SELECT 6333 postgres 16 0 4409m 1.8g 1.8g R 35.3 9.3 4:34.96 postgres: postgres bancox ipX(36995) SELECT 6789 postgres 16 0 4398m 1.5g 1.4g R 35.3 7.4 1:11.10 postgres: postgres bancox ipX(37468) SELECT 6796 postgres 16 0 4397m 1.0g 987m R 34.2 5.1 0:31.00 postgres: postgres bancox ipX(37475) SELECT 6720 postgres 16 0 4398m 1.5g 1.5g R 31.9 7.7 1:39.07 postgres: postgres bancox ipX(37400) SELECT 6797 postgres 16 0 4398m 1.1g 1.1g R 31.9 5.7 0:46.33 postgres: postgres bancox ipX(37476) SELECT 6818 postgres 16 0 4391m 1.3g 1.3g R 29.6 6.7 0:20.25 postgres: postgres bancox ipX(37503) SELECT 6819 postgres 16 0 4401m 1.5g 1.4g R 29.6 7.4 0:51.29 postgres: postgres bancox ipX(37504) SELECT 6583 postgres 15 0 4398m 1.5g 1.5g R 22.8 7.8 5:40.79 postgres: postgres bancox ipX(37209) SELECT 6810 postgres 16 0 4387m 1.3g 1.2g R 19.4 6.4 0:18.93 postgres: postgres bancox ipX(37489) SELECT 6790 postgres 16 0 4388m 1.0g 1.0g R 13.7 5.1 0:16.35 postgres: postgres bancox ipX(37469) idle in transaction 6820 postgres 15 0 4399m 1.4g 1.4g S 4.6 7.1 0:30.27 postgres: postgres bancox ipX(37507) idle 6815 postgres 16 0 4401m 1.3g 1.3g R 2.3 6.6 0:29.87 postgres: postgres bancox ipX(37494) idle in transaction 6821 postgres 15 0 4397m 1.4g 1.4g S 1.1 7.3 0:44.77 postgres: postgres bancox ipX(37510) idle in transaction Temos 4 CPUs, Shared_buffers 4GB, 20 GB de memória (SO) ,max_connections 300 (não foi configurado por nós) Só que o pool de conexões JBoss pro PG é de mais de 200, mesmo com essa pouca utilização efetiva de conexões simultãneas Existe uma degradação muito rápida do ambiente como um todo. Diante disso: Diminuo o pool de conexões do Jboss? É normal esse uso acentuado de CPU pra tão poucos processos simultâneos? Essa memória não diminui mesmo em horário sem ninguém usar? O %mem de cada processo não diminui de forma nenhuma? O valor em shared_buffers é alocado quando o PostgreSQL é inicializado e assim permanece, o tempo todo e é uma área única para todos os processos. Cada processo (conexão), porém, pode usar uma memória própria, dependendo da consulta que está fazendo. Vejo que você tem vários SELECT no seu top. Perguntas: 1) Que tipo de SELECT são esses, poucos resultados baseados em índices ou grandes massas em seqscans? Tem ORDER BY, GROUP BY ou DISTINCT? 2) Qual o valor configurado em work_mem? Este valor pode ser usado para cada sub-select numa mesma consulta. []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Desconsiderar maiúsculo/minúsculo em campos varchar
On Mon, Apr 1, 2013 at 1:45 PM, izaque Maciel izaquemac...@gmail.comwrote: Boa tarde, alguns dias atrás, precisei que os campos varchar funcionassem como Case Insensitive, mas tudo que o pessoal me retornou foi algo como: select upper(c.nome_cli) from clientes c like upper(c.nome_cli), e um outro usuário me reportou que eu poderia utilizar o tipo de dado CITEXT, que no delphi não ficou legal. Foi então que por um acaso procurando uma outra coisa encontrei este artigo abaixo, caso alguém queira utilizar: corte O problema de funções e operadores criadas no catálogo são as atualizações e migrações que além de dramáticas por vezes causam comportamentos estranhos no otiimizador. O operador (ILIKE - repare o I no início) parece tão mais simples: SELECT 'AbC' ILIKE 'abc'; Embora esteja em não-conformidade com o padrão SQL, costuma ser útil, simples e funcional com a maioria dos ORMs distribuídos para PostgreSQL seja a linguagem que for. Abraço! -Leo -- Leonardo Cezar http://www.postgreslogia http://postgreslogia.wordpress.com.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
Flávio, Teoricamente deveriam ser selects que voltam poucos dados work_mem 50MB Como o SO tem 20GB, o PG tem 4GB de shared buffers, em menos de 12 horas a memória chega nos 20GB e não baixa de forma nenhuma, mesmo sem ninguém usar o sistema. Essa característica é normal? Em 1 de abril de 2013 15:48, Flavio Henrique Araque Gurgel fla...@4linux.com.br escreveu: Em 01-04-2013 15:44, Luiz Carlos L. Nogueira Jr. escreveu: Pessoal, Tenho essa situação no top, normalmente top - 15:31:38 up 10 days, 8:13, 4 users, load average: 8.64, 7.58, 6.75 Tasks: 348 total, 19 running, 329 sleeping, 0 stopped, 0 zombie Cpu(s): 99.1%us, 0.3%sy, 0.0%ni, 0.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 20548432k total, 20103744k used, 444688k free, 173956k buffers Swap: 522104k total, 452k used, 521652k free, 15943964k cached PID USER PR NI VIRT RES SHR S %CPU %MEMTIME+ COMMAND 6793 postgres 16 0 4397m 1.4g 1.4g R 63.8 7.2 1:08.78 postgres: postgres bancox ipX(37472) SELECT 6812 postgres 16 0 4387m 1.2g 1.1g R 45.6 5.9 0:17.29 postgres: postgres bancox ipX(37491) SELECT 6333 postgres 16 0 4409m 1.8g 1.8g R 35.3 9.3 4:34.96 postgres: postgres bancox ipX(36995) SELECT 6789 postgres 16 0 4398m 1.5g 1.4g R 35.3 7.4 1:11.10 postgres: postgres bancox ipX(37468) SELECT 6796 postgres 16 0 4397m 1.0g 987m R 34.2 5.1 0:31.00 postgres: postgres bancox ipX(37475) SELECT 6720 postgres 16 0 4398m 1.5g 1.5g R 31.9 7.7 1:39.07 postgres: postgres bancox ipX(37400) SELECT 6797 postgres 16 0 4398m 1.1g 1.1g R 31.9 5.7 0:46.33 postgres: postgres bancox ipX(37476) SELECT 6818 postgres 16 0 4391m 1.3g 1.3g R 29.6 6.7 0:20.25 postgres: postgres bancox ipX(37503) SELECT 6819 postgres 16 0 4401m 1.5g 1.4g R 29.6 7.4 0:51.29 postgres: postgres bancox ipX(37504) SELECT 6583 postgres 15 0 4398m 1.5g 1.5g R 22.8 7.8 5:40.79 postgres: postgres bancox ipX(37209) SELECT 6810 postgres 16 0 4387m 1.3g 1.2g R 19.4 6.4 0:18.93 postgres: postgres bancox ipX(37489) SELECT 6790 postgres 16 0 4388m 1.0g 1.0g R 13.7 5.1 0:16.35 postgres: postgres bancox ipX(37469) idle in transaction 6820 postgres 15 0 4399m 1.4g 1.4g S 4.6 7.1 0:30.27 postgres: postgres bancox ipX(37507) idle 6815 postgres 16 0 4401m 1.3g 1.3g R 2.3 6.6 0:29.87 postgres: postgres bancox ipX(37494) idle in transaction 6821 postgres 15 0 4397m 1.4g 1.4g S 1.1 7.3 0:44.77 postgres: postgres bancox ipX(37510) idle in transaction Temos 4 CPUs, Shared_buffers 4GB, 20 GB de memória (SO) ,max_connections 300 (não foi configurado por nós) Só que o pool de conexões JBoss pro PG é de mais de 200, mesmo com essa pouca utilização efetiva de conexões simultãneas Existe uma degradação muito rápida do ambiente como um todo. Diante disso: Diminuo o pool de conexões do Jboss? É normal esse uso acentuado de CPU pra tão poucos processos simultâneos? Essa memória não diminui mesmo em horário sem ninguém usar? O %mem de cada processo não diminui de forma nenhuma? O valor em shared_buffers é alocado quando o PostgreSQL é inicializado e assim permanece, o tempo todo e é uma área única para todos os processos. Cada processo (conexão), porém, pode usar uma memória própria, dependendo da consulta que está fazendo. Vejo que você tem vários SELECT no seu top. Perguntas: 1) Que tipo de SELECT são esses, poucos resultados baseados em índices ou grandes massas em seqscans? Tem ORDER BY, GROUP BY ou DISTINCT? 2) Qual o valor configurado em work_mem? Este valor pode ser usado para cada sub-select numa mesma consulta. []s __** Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS __**_ pgbr-geral mailing list pgbr-geral@listas.postgresql.**org.brpgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.**br/cgi-bin/mailman/listinfo/**pgbr-geralhttps://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] Consumo alto de memória e CPU
2013/4/1 Luiz Carlos L. Nogueira Jr. lcnogueir...@gmail.com Pessoal, Tenho essa situação no top, normalmente top - 15:31:38 up 10 days, 8:13, 4 users, load average: 8.64, 7.58, 6.75 Tasks: 348 total, 19 running, 329 sleeping, 0 stopped, 0 zombie Cpu(s): 99.1%us, 0.3%sy, 0.0%ni, 0.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st Mem: 20548432k total, 20103744k used, 444688k free, 173956k buffers Swap: 522104k total, 452k used, 521652k free, 15943964k cached Existe uma degradação muito rápida do ambiente como um todo. Diante disso: Degradação? Diminuo o pool de conexões do Jboss? Não sei. É normal esse uso acentuado de CPU pra tão poucos processos simultâneos? Aperte 1 em seu teclado com estiver rodando o top e apresente o resultado novamente.. Essa memória não diminui mesmo em horário sem ninguém usar? Clássico... http://www.linuxatemyram.com/ O %mem de cada processo não diminui de forma nenhuma? Novamente... http://www.linuxatemyram.com/ Abraço! -Leo -- Leonardo Cezar http://www.postgreslogia http://postgreslogia.wordpress.com.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
A moda do top-post voltou na lista. Em 01-04-2013 15:58, Luiz Carlos L. Nogueira Jr. escreveu: Flávio, Teoricamente deveriam ser selects que voltam poucos dados work_mem 50MB Se suas 200 conexões do pool forem abertas e cada uma usar *só* 50MB, isso dá 10GB. Lembrando que consultas complicadas podem usar mais de uma vez isso, então, você está com risco um pouco alto de esgotar a memória do seu servidor. Como o SO tem 20GB, o PG tem 4GB de shared buffers, em menos de 12 horas a memória chega nos 20GB e não baixa de forma nenhuma, mesmo sem ninguém usar o sistema. Essa característica é normal? Veja no seu top ou free onde diz: 15943964k cached Tem 15GB que seu S.O. está usando pra cache de disco. Isso é normal, esperado e, felizmente, acontece. Se outros programas precisarem de mais RAM, o S.O. tira daí. A memória não está livre mas em uso por cache do S.O. Não há nada de errado em seu PostgreSQL. []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
Em 01-04-2013 16:02, Leonardo Cezar escreveu: Essa memória não diminui mesmo em horário sem ninguém usar? Clássico... http://www.linuxatemyram.com/ O %mem de cada processo não diminui de forma nenhuma? Novamente... http://www.linuxatemyram.com/ Léo, se eu conhecesse esse site antes, teria economizado 99,9% de minha saliva ao explicar como o Linux usa a memória :D []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
2013/4/1 Flavio Henrique Araque Gurgel fla...@4linux.com.br Novamente... http://www.linuxatemyram.com/ Léo, se eu conhecesse esse site antes, teria economizado 99,9% de minha saliva ao explicar como o Linux usa a memória :D As vezes a FAQ não funciona... Você fez um resumo daquilo que na verdade 99,9% precisa conhecer ;-D Abraço! -Leo -- Leonardo Cezar http://www.postgreslogia http://postgreslogia.wordpress.com.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Consumo alto de memória e CPU
Valeu pela dica de como é usada a memória no Linux Em 1 de abril de 2013 16:14, Leonardo Cezar lhce...@gmail.com escreveu: 2013/4/1 Flavio Henrique Araque Gurgel fla...@4linux.com.br Novamente... http://www.linuxatemyram.com/ Léo, se eu conhecesse esse site antes, teria economizado 99,9% de minha saliva ao explicar como o Linux usa a memória :D As vezes a FAQ não funciona... Você fez um resumo daquilo que na verdade 99,9% precisa conhecer ;-D Abraço! -Leo -- Leonardo Cezar http://www.postgreslogia http://postgreslogia.wordpress.com.com ___ 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] Consumo alto de memória e CPU
Em 01-04-2013 16:14, Leonardo Cezar escreveu: Novamente... http://www.linuxatemyram.com/ Léo, se eu conhecesse esse site antes, teria economizado 99,9% de minha saliva ao explicar como o Linux usa a memória :D As vezes a FAQ não funciona... Você fez um resumo daquilo que na verdade 99,9% precisa conhecer ;-D Rapaz, não é só lista. Clientes, colegas, também! []s __ Flavio Henrique A. Gurgel Líder de Projetos Especiais Consultoria, Projetos Treinamentos 4LINUX Tel1: +55-11.2125-4747 ou 2125-4748 www.4linux.com.br email: fla...@4linux.com.br __ FREE SOFTWARE SOLUTIONS ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] RES: descobrir nas System Tables quais tabelas de um schema, utilizam uma certa coluna como FK
Gostaria de cancelar minha assinatura neste grupo...pois me recadastrei com outro email... Rdrigo De: pgbr-geral [mailto:pgbr-geral-boun...@listas.postgresql.org.br] Em nome de Jean Pereira Enviada em: quinta-feira, 28 de março de 2013 08:18 Para: Comunidade PostgreSQL Brasileira Assunto: Re: [pgbr-geral] descobrir nas System Tables quais tabelas de um schema, utilizam uma certa coluna como FK On 03/27/2013 23:44, Marcos Aurelio Nobre wrote: sALLdações . Boa noite. Estou precisando de uma ajuda. Em um servidor 9.1 tenho três schemas A, B e C Em A há uma tabela X que tem a coluna C como sua PK Em B há 30 tabelas que tem C como FK com a DRI : ON UPDATE CASCADE ON DELETE NO ACTION. Em C há 400 tabelas e 80% delas tem C como FK, porém sem DRI implementado nas contraints. Então eu não gostaria de entrar em cerca de 200 ~ 300 tabelas , excluir as FK-Constraints que referem-se / mencionam C e recriá-las com a DRI de update-cascade. Assim eu vos pergunto: 1) Existe algum commando de DDL tipo ALTER CONSTRAINT . que pudesse ser aplicado a estas tabela, modificando-lhes ou incorporando-lhes um UPDATE CASCADE ? Bom... acho eu que não... mais tem outras pessoas que podem te ajudar nisso... 2) Existe algum SELECT que possa ser aplicado às SYSTEM TABLES de modo que eu descubra quais tabelas utilizam a coluna C como foreign key ? Talvez ajude você.. SELECT distinct tc.constraint_name, tc.constraint_type, tc.table_schema, tc.table_name, kcu.column_name, tc.is_deferrable, tc.initially_deferred, rc.match_option AS match_type, rc.update_rule AS on_update, rc.delete_rule AS on_delete, ccu.table_schema, ccu.table_name AS references_table, ccu.column_name AS references_field FROM information_schema.table_constraints tc LEFT JOIN information_schema.key_column_usage kcu ON tc.constraint_catalog = kcu.constraint_catalog AND tc.constraint_schema = kcu.constraint_schema AND tc.constraint_name = kcu.constraint_name LEFT JOIN information_schema.referential_constraints rc ON tc.constraint_catalog = rc.constraint_catalog AND tc.constraint_schema = rc.constraint_schema AND tc.constraint_name = rc.constraint_name LEFT JOIN information_schema.constraint_column_usage ccu ON rc.unique_constraint_catalog = ccu.constraint_catalog AND rc.unique_constraint_schema = ccu.constraint_schema AND rc.unique_constraint_name = ccu.constraint_name WHERE lower(tc.constraint_type) in ('foreign key') AND ccu.table_name = 'nome da tablea que tens a PK' --AND ccu.column_name = 'campo PK' --AND kcu.column_name = 'nome do campo nas FK' order by tc.constraint_name 3) Outra variante de consulta e descobrir qual constraint utiliza Gratos: MN ___ 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] Conversão de DB2 para Postgres
Para ficar registrado, a Solução que chegou ao resultado que eu queria foi essa: SELECT date(data_processamento + (7 - cast(to_char(data_processamento, 'D') as integer))) into :DAT-FIM-SEMANA FROM TabProcessamento Obrigado a Todos que colaboraram. Em 31 de março de 2013 20:44, Dickson S. Guedes lis...@guedesoft.netescreveu: Em 31 de março de 2013 20:24, Sanzio Carmo sanzio.ca...@gmail.com escreveu: Amigos, Depois da ajuda de todos, consegui fazer funcionar. As explicações me ajudaram a refletir no que eu queria, que era calcular a data do ultimo dia da semana de acordo com o dia informado. Fico muito grato a todos. Legal! Que tal nos mostrar a solução para o seu caso para que o histórico da lista possa ser útil para outros que tenham a mesma dúvida que a sua? []s -- Dickson S. Guedes mail/xmpp: gue...@guedesoft.net - skype: guediz http://github.com/guedes - http://guedesoft.net http://www.postgresql.org.br ___ 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