Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Bom dia Flavio, Neste momento nosso servidor StandBy não está recebendo consultas devido ao alto delay entre o ultimo archive enviado, e o aplicado no standby. Mas esta habilitado para receber consultas. As configurações de max_standby_streaming_delay e max_standby_archive_delay estão seguindo o padrão do postgres. Não fiz alterações nestes parametros. max_standby_archive_delay | 30s max_standby_streaming_delay | 30s Eles poderiam influenciar? Quanto as consultas repositorio=# select * from pg_replication_slots; slot_name | plugin | slot_type | datoid | database | active | active_pid | xmin| catalog_xmin | restart_lsn | confirmed_flush_lsn -++---++--+++---+--+--+- bdreplica01 || physical || | t | 47368 | 125364835 | | 928/B400 | repositorio=# select * from pg_stat_replication; pid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | backend_xmin | state | se nt_location | write_location | flush_location | replay_location | sync_priority | sync_state ---+--+-+--+--+-+-+---+--+---+--- +++-+---+ 47368 |18025 | replication | walreceiver | 10.120.5.201 | | 50464 | 2017-08-29 15:39:31.591119-03 | | streaming | 92 9/98687328 | 929/98686000 | 929/98686000 | 88E/91CB7AE0| 0 | async O parametro de log checkpoint está habilitado em nosso banco, e a quantidade de archives gerados simultaneamente é o seguinte. [root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres | grep -v "deleted" | grep pg_xlog | wc -l 169 [root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres | grep -v "deleted" | grep pg_xlog | wc -l 159 [root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres | grep -v "deleted" | grep pg_xlog | wc -l 189 [root@bdreplica00 config_exporters]# lsof | grep 0 | grep postgres | grep -v "deleted" | grep pg_xlog | wc -l 209 O consumo do wal_receiver é baixo comparado ao numero de CPUs que temos. O processo consome em media 20% de CPU em um nucleo. Possuimos 20 nucleos. 12819 postgres 20 0 35,692g 3520 1876 S 19,2 0,0 149:28.23 postgres: wal receiver process streaming 933/7C8D8000 40604 postgres 20 0 35,686g 3164 1468 D 2,6 0,0 126:44.17 postgres: startup process recovering 0001088E0097 Os dados do IOSTAT são os seguintes [root@bdreplica01 config_exporters]# iostat Linux 3.10.0-327.36.3.el7.x86_64 (bdreplica01) 08/31/2017 _x86_64_ (20 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0,260,000,772,970,00 96,01 Device:tpskB_read/skB_wrtn/skB_readkB_wrtn md02246,70 26805,26 50759,55 18153260865 34375764472 Quanto a escrita e leitura vejo que a mesma não esta saturada. Em nossa configuração conseguimos atingir 1,5Gb/s de escrita no disco de banco. Atualmente este disco é um RAID0 de 17 SSDs. O processo de aplicação de archives esta consumindo proximo a 16Mb/s. O problema não poderia estar ligado ao tamanho do archive, que no caso é de 16MB. Outro ponto, a blocagem do disco poderia influenciar neste processo de restore? Att, Em 31 de agosto de 2017 09:25, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > > > Em qui, 31 de ago de 2017 às 13:24, Daniel Luiz da Silva < > daniel.si...@ipm.com.br> escreveu: > >> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. >> org.br> >> *Enviadas: *Quinta-feira, 31 de agosto de 2017 7:42:46 >> >> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >> Stream Replication >> >> Bom dia Fabio, >> Creio que tenha me expressado da maneira incorreta. Não faço nenhuma >> alteração para copia de archives uma vez que todo o pg_xlog é transferido >> para a outra maquina via WAL Sender sem que tenha que fazer alterações >> tanto no recovery.conf, quanto no postgres.conf de ambas as maquinas. >> Criamos um slot e definimos o banco como hot standby, o procedimento que >> por sua vez fará com que o a replica receba os arquivos da maquina master, >> e isso esta ocorrendo corretamente e de forma instantanea. >> >> Entretanto irei seguir as recomendações passadas por você, e irei testar >> o procedimento do Euler. >> >> Agradeço desde já pela
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Bom dia Fabio, Creio que tenha me expressado da maneira incorreta. Não faço nenhuma alteração para copia de archives uma vez que todo o pg_xlog é transferido para a outra maquina via WAL Sender sem que tenha que fazer alterações tanto no recovery.conf, quanto no postgres.conf de ambas as maquinas. Criamos um slot e definimos o banco como hot standby, o procedimento que por sua vez fará com que o a replica receba os arquivos da maquina master, e isso esta ocorrendo corretamente e de forma instantanea. Entretanto irei seguir as recomendações passadas por você, e irei testar o procedimento do Euler. Agradeço desde já pela atenção. Att, Em 31 de agosto de 2017 06:45, Fábio Telles Rodriguez < fabio.tel...@gmail.com> escreveu: > > > Em 30 de agosto de 2017 19:21, Marcelo Kruger < > marcelo.kru...@neoway.com.br> escreveu: > >> Daniel, >> >> Devido ao archive estar por padrão no pg_xlog não foi necessario >> especificar o archive_command. >> > > Você está fazendo confusão! Jamais copie arquivos diretamente para dentro > ou para fora do pg_xlog. Deixe que o PostgreSQL gerencie esta área para > você. > > Monte o Standby de acordo com o procedimento normal. Se estiver na dúvida, > siga o procedimento do artigo do Euler Taveira em: > http://eulerto.blogspot.com.br/2017/02/replicacao-o-que-mudou.html > > > -- > Atenciosamente, > Fábio Telles Rodriguez > blog: http:// <http://www.midstorm.org/%7Etelles/>s > <http://tellesr.wordpress.com/>avepoint.blog.br > e-mail / gtalk / MSN: fabio.tel...@gmail.com > Skype: fabio_telles > > Timbira - A empresa brasileira de Postgres > http://www.timbira.com.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] Lentidão na aplicação do Archive - Stream Replication
Daniel, Devido ao archive estar por padrão no pg_xlog não foi necessario especificar o archive_command. Att, Em 30 de agosto de 2017 16:37, Daniel Luiz da Silva <daniel.si...@ipm.com.br > escreveu: > > > -- > *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> > *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. > org.br> > *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:23:54 > *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - > Stream Replication > > Daniel, > O arquivo im_the_master é apenas uma trigger para transitar o servidor do > stand-by para a produção. É um arquivo vazio, nosso processo cria este > arquivo quando identifica que o servidor principal não esta respondendo. > > Quanto ao shared_buffer haviamos lido esta questão do tamanho. Chegamos a > reduzir o shared, mas o tempo de processamento do archive ficou na mesma > media de tempo. > > Att, > > Marcelo, > Como está o archive_command no slave? > > Em 30 de agosto de 2017 16:16, Daniel Luiz da Silva < > daniel.si...@ipm.com.br> escreveu: > >> >> >> -- >> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. >> org.br> >> *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:03:21 >> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >> Stream Replication >> >> Daniel, quanto a questão do checkpoint_completion_target não havia me >> atentato. E desta forma justificaria o tempo de descarga dos dados em >> disco. O shared_buffer é elevado em nosso caso pois nosso processamento de >> dados exige tal configuração de memoria. >> Daniel, o arquivo de recovery.conf está da seguinte forma >> >> standby_mode = 'on' >> primary_slot_name = 'bdreplica01' >> primary_conninfo = 'host=bdreplica00 port=5433 user=replication' >> trigger_file = '/var/lib/pgsql/9.6/data/im_the_master' >> >> Att, >> >> Marcelo, >> >> Normalmente não se utiliza o shared_buffer maior que 8GB, justamente >> porque tem esses malefícios com WAL e recovery caso necessário. Se quiser >> pesquisar dentro do arquivario do forum PostgreSQL Brasil, existe vários >> tópicos sobre as desvantagens de ser maior que 8GB. É interessante >> acompanhar o pg_buffercache do seu cluster, para saber se os arquivos >> dentro do buffer fica muito tempo, com isso, conseguirá comparar se o >> tamanho do shared_buffer está suficiente ou não. >> O que existe dentro do comando im_the_master ? >> >> Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva < >> daniel.si...@ipm.com.br> escreveu: >> >>> >>> >>> -- >>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >>> *Para: *"Comunidade PostgreSQL Brasileira" < >>> pgbr-geral@listas.postgresql.org.br> >>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07 >>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >>> Stream Replication >>> >>> Daniel, boa tarde. >>> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que >>> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o >>> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para >>> aplicar na base de dados. >>> >>> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, >>> isso será o tempo aproximado para processar o arquivo, o tempo de envio >>> deverá ser curto. >>> >>> Apos finalizar o archive no master o envio para o slave e instantaneo. >>> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está >>> levando mais de 10 minutos. E temos operação massiva de inserção e >>> alteração, que não justificaria a demora para finalizar este archive. >>> >>> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da >>> base, inclusive, esse cluster está configurado com uma valor bem alto de >>> shared_buffer, então para ler essa memória e descarregar poderá levar mais >>> tempo que previsto. Ler esse link [1] >>> O seu checkpoint_timeout está em 10 minutos, porém o >>> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor >>> default, como está comentado, e valor no comentário é 0.9, significa que >>> será feito uma desc
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Daniel, O arquivo im_the_master é apenas uma trigger para transitar o servidor do stand-by para a produção. É um arquivo vazio, nosso processo cria este arquivo quando identifica que o servidor principal não esta respondendo. Quanto ao shared_buffer haviamos lido esta questão do tamanho. Chegamos a reduzir o shared, mas o tempo de processamento do archive ficou na mesma media de tempo. Att, Em 30 de agosto de 2017 16:16, Daniel Luiz da Silva <daniel.si...@ipm.com.br > escreveu: > > > -- > *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> > *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. > org.br> > *Enviadas: *Quarta-feira, 30 de agosto de 2017 16:03:21 > *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - > Stream Replication > > Daniel, quanto a questão do checkpoint_completion_target não havia me > atentato. E desta forma justificaria o tempo de descarga dos dados em > disco. O shared_buffer é elevado em nosso caso pois nosso processamento de > dados exige tal configuração de memoria. > Daniel, o arquivo de recovery.conf está da seguinte forma > > standby_mode = 'on' > primary_slot_name = 'bdreplica01' > primary_conninfo = 'host=bdreplica00 port=5433 user=replication' > trigger_file = '/var/lib/pgsql/9.6/data/im_the_master' > > Att, > > Marcelo, > > Normalmente não se utiliza o shared_buffer maior que 8GB, justamente > porque tem esses malefícios com WAL e recovery caso necessário. Se quiser > pesquisar dentro do arquivario do forum PostgreSQL Brasil, existe vários > tópicos sobre as desvantagens de ser maior que 8GB. É interessante > acompanhar o pg_buffercache do seu cluster, para saber se os arquivos > dentro do buffer fica muito tempo, com isso, conseguirá comparar se o > tamanho do shared_buffer está suficiente ou não. > O que existe dentro do comando im_the_master ? > > Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva < > daniel.si...@ipm.com.br> escreveu: > >> >> >> -- >> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. >> org.br> >> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07 >> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >> Stream Replication >> >> Daniel, boa tarde. >> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que >> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o >> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para >> aplicar na base de dados. >> >> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso >> será o tempo aproximado para processar o arquivo, o tempo de envio deverá >> ser curto. >> >> Apos finalizar o archive no master o envio para o slave e instantaneo. >> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está >> levando mais de 10 minutos. E temos operação massiva de inserção e >> alteração, que não justificaria a demora para finalizar este archive. >> >> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da >> base, inclusive, esse cluster está configurado com uma valor bem alto de >> shared_buffer, então para ler essa memória e descarregar poderá levar mais >> tempo que previsto. Ler esse link [1] >> O seu checkpoint_timeout está em 10 minutos, porém o >> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor >> default, como está comentado, e valor no comentário é 0.9, significa que >> será feito uma descarga da memória para o disco de arquivos WAL a cada +-5 >> minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos ( >> 10 minutos * 0.9), se configurado dessa forma. É importante intender como >> funciona esse processo. >> >> Mas existe algum problema na slave ainda. Como está configurado seu >> "recovery.conf"? Esse arquivo deveria ler os arquivos que chega >> instantaneamente. >> >> [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html >> >> Att, >> >> >> >> Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva < >> daniel.si...@ipm.com.br> escreveu: >> >>> >>> >>> -- >>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >>> *Para: *"Comunidade PostgreSQL Brasileira" < >>> pgbr-geral@listas.postgresql.org.br> >>> *Envia
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Daniel, note que estamos recebendo um archive muito a frente do que estamos aplicando. 12819 postgres 20 0 35.692g 3520 1876 S 9.0 0.0 73:08.54 postgres: wal receiver process streaming 8E6/BF2EC000 40607 postgres 20 0 35.688g 5548 1412 S 4.7 0.0 17:49.45 postgres: checkpointer process 40604 postgres 20 0 35.686g 3160 1468 D 4.3 0.0 87:32.05 postgres: startup process recovering 00010888005B O processo de recovering esta levando muito tempo para processar um unico archive (mais de 10 segundos). Att, Em 30 de agosto de 2017 16:03, Marcelo Kruger <marcelo.kru...@neoway.com.br> escreveu: > Daniel, quanto a questão do checkpoint_completion_target não havia me > atentato. E desta forma justificaria o tempo de descarga dos dados em > disco. O shared_buffer é elevado em nosso caso pois nosso processamento de > dados exige tal configuração de memoria. > > Daniel, o arquivo de recovery.conf está da seguinte forma > > standby_mode = 'on' > primary_slot_name = 'bdreplica01' > primary_conninfo = 'host=bdreplica00 port=5433 user=replication' > trigger_file = '/var/lib/pgsql/9.6/data/im_the_master' > > Att, > > Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva < > daniel.si...@ipm.com.br> escreveu: > >> >> >> -- >> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. >> org.br> >> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07 >> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >> Stream Replication >> >> Daniel, boa tarde. >> Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que >> tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o >> processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para >> aplicar na base de dados. >> >> Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso >> será o tempo aproximado para processar o arquivo, o tempo de envio deverá >> ser curto. >> >> Apos finalizar o archive no master o envio para o slave e instantaneo. >> Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está >> levando mais de 10 minutos. E temos operação massiva de inserção e >> alteração, que não justificaria a demora para finalizar este archive. >> >> Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da >> base, inclusive, esse cluster está configurado com uma valor bem alto de >> shared_buffer, então para ler essa memória e descarregar poderá levar mais >> tempo que previsto. Ler esse link [1] >> O seu checkpoint_timeout está em 10 minutos, porém o >> checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor >> default, como está comentado, e valor no comentário é 0.9, significa que >> será feito uma descarga da memória para o disco de arquivos WAL a cada +-5 >> minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos ( >> 10 minutos * 0.9), se configurado dessa forma. É importante intender como >> funciona esse processo. >> >> Mas existe algum problema na slave ainda. Como está configurado seu >> "recovery.conf"? Esse arquivo deveria ler os arquivos que chega >> instantaneamente. >> >> [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html >> >> Att, >> >> >> >> Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva < >> daniel.si...@ipm.com.br> escreveu: >> >>> >>> >>> -- >>> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >>> *Para: *"Comunidade PostgreSQL Brasileira" < >>> pgbr-geral@listas.postgresql.org.br> >>> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04 >>> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >>> Stream Replication >>> >>> Lucas, boa tarde. >>> Não é utilizado Parallel Query no Slave. >>> >>> Att, >>> >>> Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com> >>> escreveu: >>> >>>> >>>>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da >>>>> replica. >>>>> >>>>> Gostaria de apoio para resolver este problema de lentidão no momento >>>>> do recovery destes archives >>>>> >>>>> 12819 postgres 20 0 35.692g 3
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Daniel, quanto a questão do checkpoint_completion_target não havia me atentato. E desta forma justificaria o tempo de descarga dos dados em disco. O shared_buffer é elevado em nosso caso pois nosso processamento de dados exige tal configuração de memoria. Daniel, o arquivo de recovery.conf está da seguinte forma standby_mode = 'on' primary_slot_name = 'bdreplica01' primary_conninfo = 'host=bdreplica00 port=5433 user=replication' trigger_file = '/var/lib/pgsql/9.6/data/im_the_master' Att, Em 30 de agosto de 2017 15:49, Daniel Luiz da Silva <daniel.si...@ipm.com.br > escreveu: > > > -- > *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> > *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. > org.br> > *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:55:07 > *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - > Stream Replication > > Daniel, boa tarde. > Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que > tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o > processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para > aplicar na base de dados. > > Aqui existe um detalhe, ela não demorará 1 dia para chegar no slave, isso > será o tempo aproximado para processar o arquivo, o tempo de envio deverá > ser curto. > > Apos finalizar o archive no master o envio para o slave e instantaneo. > Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está > levando mais de 10 minutos. E temos operação massiva de inserção e > alteração, que não justificaria a demora para finalizar este archive. > > Para calcular isso terá que acompanhar o checkpoint que ocorre dentro da > base, inclusive, esse cluster está configurado com uma valor bem alto de > shared_buffer, então para ler essa memória e descarregar poderá levar mais > tempo que previsto. Ler esse link [1] > O seu checkpoint_timeout está em 10 minutos, porém o > checkpoint_completion_target está 0.5, se esse parâmetro estiver com valor > default, como está comentado, e valor no comentário é 0.9, significa que > será feito uma descarga da memória para o disco de arquivos WAL a cada +-5 > minutos (10 minutos * 0.5), se estiver configurado padrão, e +-9 minutos ( > 10 minutos * 0.9), se configurado dessa forma. É importante intender como > funciona esse processo. > > Mas existe algum problema na slave ainda. Como está configurado seu > "recovery.conf"? Esse arquivo deveria ler os arquivos que chega > instantaneamente. > > [1] https://www.postgresql.org/docs/9.6/static/wal-configuration.html > > Att, > > > > Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva < > daniel.si...@ipm.com.br> escreveu: > >> >> >> -- >> *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> >> *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. >> org.br> >> *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04 >> *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - >> Stream Replication >> >> Lucas, boa tarde. >> Não é utilizado Parallel Query no Slave. >> >> Att, >> >> Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com> >> escreveu: >> >>> >>>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da >>>> replica. >>>> >>>> Gostaria de apoio para resolver este problema de lentidão no momento do >>>> recovery destes archives >>>> >>>> 12819 postgres 20 0 35.692g 3552 1908 S 9.3 0.0 57:05.46 >>>> postgres: wal receiver process streaming 8D8/A623D4B8 >>>> >>>> >>>> 40604 postgres 20 0 35.686g 3184 1500 D 4.7 0.0 76:29.52 >>>> postgres: startup process recovering 000108860038 >>>> >>>> >>> Marcelo, você está usando o recurso de Parallel Query nessa banco Slave? >>> Se sim, as consultas são demoradas? >>> -- >>> >>> Atenciosamente. >>> >>> *Lucas Viecelli* >>> >>> <http://www.leosoft.com.br/coopcred> >>> >>> ___ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >> >> Marcelo, >> >> Faz o seguinte teste, identifica um arquivo WAL gerado de
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Daniel, boa tarde. Para a informação chegar no slave irá demorar mais de 1 dia, uma vez que tenho 350GB de archives no slave que não foram aplicados ainda. Ou seja, o processo de WAL Sender envia o arquivo, mas o Slave leva muito tempo para aplicar na base de dados. Apos finalizar o archive no master o envio para o slave e instantaneo. Contudo notamos que para gerar um arquivo de 16MB no pg_xlog do master está levando mais de 10 minutos. E temos operação massiva de inserção e alteração, que não justificaria a demora para finalizar este archive. Att, Em 30 de agosto de 2017 14:31, Daniel Luiz da Silva <daniel.si...@ipm.com.br > escreveu: > > > -- > *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> > *Para: *"Comunidade PostgreSQL Brasileira" <pgbr-geral@listas.postgresql. > org.br> > *Enviadas: *Quarta-feira, 30 de agosto de 2017 14:14:04 > *Assunto: *Re: [pgbr-geral]Lentidão na aplicação do Archive - > Stream Replication > > Lucas, boa tarde. > Não é utilizado Parallel Query no Slave. > > Att, > > Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com> > escreveu: > >> >>> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da >>> replica. >>> >>> Gostaria de apoio para resolver este problema de lentidão no momento do >>> recovery destes archives >>> >>> 12819 postgres 20 0 35.692g 3552 1908 S 9.3 0.0 57:05.46 >>> postgres: wal receiver process streaming 8D8/A623D4B8 >>> >>> >>> 40604 postgres 20 0 35.686g 3184 1500 D 4.7 0.0 76:29.52 >>> postgres: startup process recovering 000108860038 >>> >>> >> Marcelo, você está usando o recurso de Parallel Query nessa banco Slave? >> Se sim, as consultas são demoradas? >> -- >> >> Atenciosamente. >> >> *Lucas Viecelli* >> >> <http://www.leosoft.com.br/coopcred> >> >> ___ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> > > Marcelo, > > Faz o seguinte teste, identifica um arquivo WAL gerado dentro da pg_xlog/ > no server master agora, e acompanha quanto tempo esse arquivo demorar para > chegar no slave. Além disso, faz uma consulta em alguma tabela que está no > servidor master, recupera algumas linhas, e verifica quanto tempo +- demora > para chegar essa informação no slave. > > Obrigado. > ___ > 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 > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Lucas, boa tarde. Não é utilizado Parallel Query no Slave. Att, Em 30 de agosto de 2017 14:07, Lucas Viecelli <lviecelli...@gmail.com> escreveu: > >> Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da >> replica. >> >> Gostaria de apoio para resolver este problema de lentidão no momento do >> recovery destes archives >> >> 12819 postgres 20 0 35.692g 3552 1908 S 9.3 0.0 57:05.46 >> postgres: wal receiver process streaming 8D8/A623D4B8 >> >> >> 40604 postgres 20 0 35.686g 3184 1500 D 4.7 0.0 76:29.52 >> postgres: startup process recovering 000108860038 >> >> > Marcelo, você está usando o recurso de Parallel Query nessa banco Slave? > Se sim, as consultas são demoradas? > -- > > Atenciosamente. > > *Lucas Viecelli* > > <http://www.leosoft.com.br/coopcred> > > ___ > 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] Lentidão na aplicação do Archive - Stream Replication
Boa tarde Daniel, O tempo para chegar um arquivo do master para a replica é de milesegundos. O envio do archive quando gravado no pg_xlog é enviado para a replica instantaneamente. O arquivo gerado no pg_xlog da master é recebido na replica e visto da seguinte forma. 12819 postgres 20 0 35,692g 3572 1928 S 2,7 0,0 65:16.78 postgres: wal receiver process streaming 8DF/7DD Quanto ao tempo de atraso ele pode ser calculado da seguinte forma. SELECT (CASE WHEN pg_last_xlog_receive_location() = pg_last_xlog_replay_location() THEN 0 ELSE EXTRACT (EPOCH FROM now() - pg_last_xact_replay_timestamp()) END) AS log_delay; Já a movimentação para o PG_XLOG é feita pelo proprio stream replication, não havendo nenhuma configuração. O trafego destes arquivo para a replica é feito atravez da configuração recovery.conf. standby_mode = 'on' primary_slot_name = 'slot' primary_conninfo = 'host=hostname port=5433 user=replication trigger_file = '/var/lib/pgsql/9.6/data/im_the_master Att, Em 30 de agosto de 2017 13:54, Daniel Luiz da Silva <daniel.si...@ipm.com.br > escreveu: > > -- > *De: *"Marcelo Kruger" <marcelo.kru...@neoway.com.br> > *Para: *pgbr-geral@listas.postgresql.org.br > *Enviadas: *Quarta-feira, 30 de agosto de 2017 12:09:56 > *Assunto: *[pgbr-geral] Lentidão na aplicação do Archive - Stream > Replication > > Boa tarde a todos, > Possuimos uma arquitetura na nuvem da Azure com duas maquinas de banco com > a versão 9.6 do Postgres. Esta estrutura trabalha com uma maquina sendo o > banco principal, e a outra sendo a replica deste banco. A replicação é de > forma assincrona e via Stream Replication, utilizando um Slot para > replicação. > > Ambas as maquinas possuem os mesmos recursos de hardware, e as mesmas > otimizações em SO > > > Disco: 17TB para database, sendo 9TB consumido. Disco é um RAID 0 de > 17SSDs de 1TB > 144 GB de memoria > 20 nucleos de processamento > > A maquina principal tem otima performance, enviando os archives do pg_xlog > em uma rede de banda maxima de 1,5GB/s. Identificamos que não existe > problema e lentidão no envio e recebimento dos arquivos na replica. > Entretando quando o postgres replicado inicia o processo de recovery destes > archives demora um tempo muito elevado, estando em media 15 segundos para > processar um archive. Isso esta causando uma diferença de dados entre os > bancos muito elevada, fazendo desta forma que a replicação nunca finalize o > processamento dos archives. > > Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da > replica. > > Gostaria de apoio para resolver este problema de lentidão no momento do > recovery destes archives > > 12819 postgres 20 0 35.692g 3552 1908 S 9.3 0.0 57:05.46 > postgres: wal receiver process streaming 8D8/A623D4B8 > > > 40604 postgres 20 0 35.686g 3184 1500 D 4.7 0.0 76:29.52 > postgres: startup process recovering 000108860038 > > Segue abaixo configuração do postgresql.conf da replica. > > listen_addresses = '*' > port = 5433 > max_connections = 2000 > superuser_reserved_connections = 3 > shared_buffers = 35257MB > work_mem = 18051kB > maintenance_work_mem = 8GB > #autovacuum_work_mem = 4GB > max_stack_depth = 5MB > dynamic_shared_memory_type = posix > vacuum_cost_delay = 20 > vacuum_cost_limit = 200 > bgwriter_delay = 10ms > bgwriter_lru_maxpages = 700 > bgwriter_lru_multiplier = 2.0 > fsync = off > synchronous_commit = off > full_page_writes = off > wal_buffers = 16MB > wal_writer_delay = 1ms > checkpoint_timeout = 10min > max_wal_size = 8GB > min_wal_size = 4GB > #checkpoint_completion_target = 0.9 > effective_cache_size = 105772MB > default_statistics_target = 500 > log_destination = 'csvlog' > logging_collector = off > log_directory = 'pg_log' > log_filename = 'postgresql-%w.log' > log_file_mode = 0640 > log_truncate_on_rotation = on > log_rotation_age = 1d > log_rotation_size = 600MB > log_min_duration_statement = 0 > log_checkpoints = on > log_connections = off > log_disconnections = off > log_duration = on > log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h' > log_lock_waits = on > log_timezone = 'Brazil/East' > autovacuum = on > log_autovacuum_min_duration = -1 > autovacuum_max_workers = 8 > autovacuum_naptime = 30s > autovacuum_vacuum_threshold = 20 > autovacuum_analyze_threshold = 20 > autovacuum_vacuum_scale_factor = 0.2 > autovacuum_analyze_scale_factor = 0.1 > autovacuum_vacuum_cost_delay = -1 > datestyle = 'iso, mdy' > timezone = 'Brazil/East' > lc_messages = 'en_US.UTF-8' > lc_monetary = 'en_US.UTF-8' > lc
[pgbr-geral] Lentidão na aplicação do Archive - Stream Replication
Boa tarde a todos, Possuimos uma arquitetura na nuvem da Azure com duas maquinas de banco com a versão 9.6 do Postgres. Esta estrutura trabalha com uma maquina sendo o banco principal, e a outra sendo a replica deste banco. A replicação é de forma assincrona e via Stream Replication, utilizando um Slot para replicação. Ambas as maquinas possuem os mesmos recursos de hardware, e as mesmas otimizações em SO Disco: 17TB para database, sendo 9TB consumido. Disco é um RAID 0 de 17SSDs de 1TB 144 GB de memoria 20 nucleos de processamento A maquina principal tem otima performance, enviando os archives do pg_xlog em uma rede de banda maxima de 1,5GB/s. Identificamos que não existe problema e lentidão no envio e recebimento dos arquivos na replica. Entretando quando o postgres replicado inicia o processo de recovery destes archives demora um tempo muito elevado, estando em media 15 segundos para processar um archive. Isso esta causando uma diferença de dados entre os bancos muito elevada, fazendo desta forma que a replicação nunca finalize o processamento dos archives. Hoje temos 1,6 dias de lag entre o archive da produção, e o archive da replica. Gostaria de apoio para resolver este problema de lentidão no momento do recovery destes archives 12819 postgres 20 0 35.692g 3552 1908 S 9.3 0.0 57:05.46 postgres: wal receiver process streaming 8D8/A623D4B8 40604 postgres 20 0 35.686g 3184 1500 D 4.7 0.0 76:29.52 postgres: startup process recovering 000108860038 Segue abaixo configuração do postgresql.conf da replica. listen_addresses = '*' port = 5433 max_connections = 2000 superuser_reserved_connections = 3 shared_buffers = 35257MB work_mem = 18051kB maintenance_work_mem = 8GB #autovacuum_work_mem = 4GB max_stack_depth = 5MB dynamic_shared_memory_type = posix vacuum_cost_delay = 20 vacuum_cost_limit = 200 bgwriter_delay = 10ms bgwriter_lru_maxpages = 700 bgwriter_lru_multiplier = 2.0 fsync = off synchronous_commit = off full_page_writes = off wal_buffers = 16MB wal_writer_delay = 1ms checkpoint_timeout = 10min max_wal_size = 8GB min_wal_size = 4GB #checkpoint_completion_target = 0.9 effective_cache_size = 105772MB default_statistics_target = 500 log_destination = 'csvlog' logging_collector = off log_directory = 'pg_log' log_filename = 'postgresql-%w.log' log_file_mode = 0640 log_truncate_on_rotation = on log_rotation_age = 1d log_rotation_size = 600MB log_min_duration_statement = 0 log_checkpoints = on log_connections = off log_disconnections = off log_duration = on log_line_prefix = '%t [%p]: [%l-1] db=%d,user=%u,app=%a,client=%h' log_lock_waits = on log_timezone = 'Brazil/East' autovacuum = on log_autovacuum_min_duration = -1 autovacuum_max_workers = 8 autovacuum_naptime = 30s autovacuum_vacuum_threshold = 20 autovacuum_analyze_threshold = 20 autovacuum_vacuum_scale_factor = 0.2 autovacuum_analyze_scale_factor = 0.1 autovacuum_vacuum_cost_delay = -1 datestyle = 'iso, mdy' timezone = 'Brazil/East' lc_messages = 'en_US.UTF-8' lc_monetary = 'en_US.UTF-8' lc_numeric = 'en_US.UTF-8' lc_time = 'en_US.UTF-8' default_text_search_config = 'pg_catalog.english' max_locks_per_transaction = 256 pgpool.pg_ctl = '/usr/pgsql-9.6/bin/pg_ctl' huge_pages=on hot_standby = on hot_standby_feedback = off wal_receiver_timeout = 0 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] DBF ==> Postgresql (dbf to postgresql)
Hi all Eu faço isto com o Pentaho Data Integrator (PDI/Kettle) é rápido e prático. Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa 2017-06-28 18:34 GMT-03:00 Leandro Guimarães Faria Corcete DUTRA < l...@dutras.org>: > Le mercredi 28 juin 2017 à 15:58 -0300, André Ormenese a écrit : > > > > No Freebsd já utilizei o pgdbf (Instalei via ports). Funcionou > > perfeitamente. No Linux não sei se existe. > > l@dcf-350092:~$ apt search pgdbf > En train de trier... Fait > Recherche en texte intégral... Fait > pgdbf/testing,unstable,now 0.6.2-1.1+b2 amd64 [installé] > converter of XBase / FoxPro tables to PostgreSQL > > l@dcf-350092:~$ > > É raro algo não existir em GNU/Linux, e geralmente está empacotado para > Debian e (ou) derivados. > > > -- > skype:leandro.gfc.dutra?chat Yahoo!: ymsgr:sendIM?lgcdutra > +55 (61) 3546 7191 gTalk: xmpp:leand...@jabber.org > +55 (61) 9302 2691ICQ/AIM: aim:GoIM?screenname=61287803 > BRAZIL GMT−3 MSN: msnim:chat?contact=lean...@dutra.fastmail.fm > ___ > 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
[pgbr-geral] Ajuda com o Query Planner
Pessoal, Alguém que saque de query planner pra ajudar? Quero entender pq ele roda um planner global ao invés de parciais. Minha query: select count(*) from table1 where time > (select time from table2 where X = Y) O PG está fazendo uma seqscan na table1 mesmo que a coluna time seja uma coluna indexada. Mas ele usa o indice se eu faço: select count(*) from table1 where time > 1498083552 Então meu problema é que, como ele não sabe o valor de filtragem de time, na duvida manda fazer seqscan. Pergunta: Existe alguma forma de mandar ele rodar o query planner por etapas? Primeiro pra subquery e depois pra query principal? Obrigado Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexões inativas não são liberadas
Olá Glauco, eu cheguei a dar uma lida a respeito. Esta é a solução indicada para este tipo de situação? A sugestão dada pelo Raphael funcionou para meu caso e estou usando provisóriamente, de qualquer maneira vamos tentar resolver o problema da aplicação. Mas obrigado por esta dica vou fazer uns testes com as ferramentas. Abs, Marcelo Em 8 de agosto de 2016 08:41, Glauco Torres <torres.gla...@gmail.com> escreveu: > >> >> O Postgre acusa que não há mais conexões disponíveis após algum tempo de >> uso do sistema, No momento não tenho outra solução a não ser derrubar o >> banco e iniciar novamente. >> >> Acredito que o problema esteja relacionado a forma como o sistema está >> interagindo com o banco, porém não conseguirei obter resposta do >> desenvolvedor para uma possível solução em curto prazo. >> >> Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre >> derrubasse essas conexões por inatividade após algum período de tempo >> determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que >> ele não tem nenhum suporte nativo para esta função. >> >> Minha pergunta é como posso implementar isso da melhor forma e sem >> precisar mexer muito na minha infraestrutura e a aplicação. >> >> minha versão é a 9.3 rodando em RHEL 6.8. >> >> Agradeço a todos pela paciência. >> >> >> Você esta utilizando algum poool de conexão? (pgPool ou pgBouncer) > > Se não tiver, estude e dê preferência ao pgBouncer se o foco for somente > pool de conexões. > > - > Glauco Torres > > > ___ > 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] Conexões inativas não são liberadas
Sim claro, é esta nossa expectativa. Só queria uma solução temporária para ganhar tempo até a solução da aplicação ocorrer. Em 7 de agosto de 2016 17:14, Osvaldo Kussama <osvaldo.kuss...@gmail.com> escreveu: > Em 07/08/16, Marcelo Zoel<marcelo.z...@gmail.com> escreveu: > > Boa tarde a todos, > > > > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para > > solucionar um problema que está ocorrendo com um sistema desenvolvido por > > terceiros para minha empresa. > > > > O Postgre acusa que não há mais conexões disponíveis após algum tempo de > > uso do sistema, No momento não tenho outra solução a não ser derrubar o > > banco e iniciar novamente. > > > > Acredito que o problema esteja relacionado a forma como o sistema está > > interagindo com o banco, porém não conseguirei obter resposta do > > desenvolvedor para uma possível solução em curto prazo. > > > > Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre > > derrubasse essas conexões por inatividade após algum período de tempo > > determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que > > ele não tem nenhum suporte nativo para esta função. > > > > Minha pergunta é como posso implementar isso da melhor forma e sem > precisar > > mexer muito na minha infraestrutura e a aplicação. > > > > minha versão é a 9.3 rodando em RHEL 6.8. > > > > Agradeço a todos pela paciência. > > > > Marcelo > > > > Lembrando que o ideal é que a aplicação fosse corrigida e fechasse a > conexão ao final da utilização. > > Osvaldo > ___ > 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] Conexões inativas não são liberadas
Vou tentar isso amanhã. Obrigado Raphael. Em 7 de agosto de 2016 15:17, Raphael Coutinho <rcoutosi...@gmail.com> escreveu: > Raphael Coutinho > > Em 07/08/2016 3:15 PM, "Marcelo Zoel" <marcelo.z...@gmail.com> escreveu: > > > > Obrigado pela resposta Raphael. > > > > Exatamente o que você faz para derrubar as conexões, executa alguma > query no banco? Seria algo deste tipo? > > > > SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = > 'regress' AND pid <> pg_backend_pid() AND state = 'idle' AND state_change < > current_timestamp - INTERVAL '5' MINUTE; > > > > Acredito que este método seja uma boa solução de contorno. > > Exatamente Marcelo > > > > Em 7 de agosto de 2016 14:50, Raphael Coutinho <rcoutosi...@gmail.com> > escreveu: > >> > >> Raphael Coutinho > >> > >> Em 07/08/2016 2:44 PM, "Marcelo Zoel" <marcelo.z...@gmail.com> > escreveu: > >> > > >> > Boa tarde a todos, > >> > > >> > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para > solucionar um problema que está ocorrendo com um sistema desenvolvido por > terceiros para minha empresa. > >> > > >> > O Postgre acusa que não há mais conexões disponíveis após algum tempo > de uso do sistema, No momento não tenho outra solução a não ser derrubar o > banco e iniciar novamente. > >> > > >> > Acredito que o problema esteja relacionado a forma como o sistema > está interagindo com o banco, porém não conseguirei obter resposta do > desenvolvedor para uma possível solução em curto prazo. > >> > > >> > Reparei que as conexões estão em IDLE e minha expectativa é que o > Postgre derrubasse essas conexões por inatividade após algum período de > tempo determinado em configuração. Fiz algumas pesquisas e fiquei surpresa > que ele não tem nenhum suporte nativo para esta função. > >> > > >> > Minha pergunta é como posso implementar isso da melhor forma e sem > precisar mexer muito na minha infraestrutura e a aplicação. > >> > > >> > minha versão é a 9.3 rodando em RHEL 6.8. > >> > > >> > Agradeço a todos pela paciência. > >> > > >> > Marcelo > >> > >> Olá Marcelo, > >> > >> Também estava com esse problema, o que fiz foi um shell para eliminar > conexões com status IDLE a X tempo. > >> > >> Utilizei a view pg_settings para consultar os referidos processos. > >> > >> Abraço, > >> Raphael > >> > > >> > ___ > >> > 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 > > > > > > > > ___ > > 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 > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Conexões inativas não são liberadas
Obrigado pela resposta Raphael. Exatamente o que você faz para derrubar as conexões, executa alguma query no banco? Seria algo deste tipo? SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'regress' AND pid <> pg_backend_pid() AND state = 'idle' AND state_change < current_timestamp - INTERVAL '5' MINUTE; Acredito que este método seja uma boa solução de contorno. Em 7 de agosto de 2016 14:50, Raphael Coutinho <rcoutosi...@gmail.com> escreveu: > Raphael Coutinho > > Em 07/08/2016 2:44 PM, "Marcelo Zoel" <marcelo.z...@gmail.com> escreveu: > > > > Boa tarde a todos, > > > > sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para > solucionar um problema que está ocorrendo com um sistema desenvolvido por > terceiros para minha empresa. > > > > O Postgre acusa que não há mais conexões disponíveis após algum tempo de > uso do sistema, No momento não tenho outra solução a não ser derrubar o > banco e iniciar novamente. > > > > Acredito que o problema esteja relacionado a forma como o sistema está > interagindo com o banco, porém não conseguirei obter resposta do > desenvolvedor para uma possível solução em curto prazo. > > > > Reparei que as conexões estão em IDLE e minha expectativa é que o > Postgre derrubasse essas conexões por inatividade após algum período de > tempo determinado em configuração. Fiz algumas pesquisas e fiquei surpresa > que ele não tem nenhum suporte nativo para esta função. > > > > Minha pergunta é como posso implementar isso da melhor forma e sem > precisar mexer muito na minha infraestrutura e a aplicação. > > > > minha versão é a 9.3 rodando em RHEL 6.8. > > > > Agradeço a todos pela paciência. > > > > Marcelo > > Olá Marcelo, > > Também estava com esse problema, o que fiz foi um shell para eliminar > conexões com status IDLE a X tempo. > > Utilizei a view pg_settings para consultar os referidos processos. > > Abraço, > Raphael > > > > ___ > > 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 > ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Conexões inativas não são liberadas
Boa tarde a todos, sou novato no PostgreSQL e gostaria de pedir ajuda nesta lista para solucionar um problema que está ocorrendo com um sistema desenvolvido por terceiros para minha empresa. O Postgre acusa que não há mais conexões disponíveis após algum tempo de uso do sistema, No momento não tenho outra solução a não ser derrubar o banco e iniciar novamente. Acredito que o problema esteja relacionado a forma como o sistema está interagindo com o banco, porém não conseguirei obter resposta do desenvolvedor para uma possível solução em curto prazo. Reparei que as conexões estão em IDLE e minha expectativa é que o Postgre derrubasse essas conexões por inatividade após algum período de tempo determinado em configuração. Fiz algumas pesquisas e fiquei surpresa que ele não tem nenhum suporte nativo para esta função. Minha pergunta é como posso implementar isso da melhor forma e sem precisar mexer muito na minha infraestrutura e a aplicação. minha versão é a 9.3 rodando em RHEL 6.8. Agradeço a todos pela paciência. Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Porque o UBER trocou o PostgreSQL para o MySQL
dahora Att, Marcelo Maia Em 27 de julho de 2016 08:51, Flavio Henrique Araque Gurgel < fha...@gmail.com> escreveu: > > Segue link com as informações: > > > > https://eng.uber.com/mysql-migration/ > > Pra quem puder, sigam as listas internacionais onde o assunto é bastante > destrinchado desde o momento da publicação: > https://www.postgresql.org/list/ > > Convém notar que alguns pontos levantados são legítimos, outros são > discutíveis e outros são pura besteira ou, simplesmente, má engenharia. > > A decisão lá foi puramente de uma nova liderança que chegou na empresa e > decidiu que era melhor pular pro MySQL. É apenas um chute, mas acho que > aí tem dedo da Oracle pra abraçar um contratinho logo logo, senão eles > teriam partido pra MariaDB ou Cassandra. > > Sinceramente, eu os desejo muito boa sorte. Toda escolha em tecnologia > tem pontos altos e baixos. > > []s > Flavio Gurgel > ___ > 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
[pgbr-geral] Lentidão será que é indice?
Boa tarde pessoal, Estou tentando resolver um problema de lentidão no meu servidor, mas não estou tendo exito, Cenario: Cloud Locaweb com Linux Debian 8, HD 100GB, 32GB memoria Apache2 PHP5 PostgresSQL 9.4 Já tuneir o PHP e Apache e Postgres O PostgresSQL persistem em ficar no TOP da lista de processos, já revisei o banco a procura de algum indice faltando, mas no meu ver está tudo OK Meu postgressql.conf mudei essas linha default_statistics_target = 100 # pgtune wizard 2015-04-23 maintenance_work_mem = 1GB # pgtune wizard 2015-04-23 constraint_exclusion = on # pgtune wizard 2015-04-23 checkpoint_completion_target = 0.9 # pgtune wizard 2015-04-23 effective_cache_size = 22GB # pgtune wizard 2015-04-23 work_mem = 192MB # pgtune wizard 2015-04-23 wal_buffers = 16MB # pgtune wizard 2015-04-23 checkpoint_segments = 32 # pgtune wizard 2015-04-23 shared_buffers = 2560MB # pgtune wizard 2015-04-23 max_connections = 2000 # pgtune wizard 2015-04-23 Bem como não sou DBA, estou na tentativa e erro, rsrsrs Se alguem puder dar umas dicas, fico muito agradecido, rssrs Grato, Marcelo da Silva - Skype: marc...@ig.com.br Fixo: (11) 2962-7390 Tim: (11) 9 5250-1407 – Whatsapp Vivo: (11) 9 9693-4251___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Nao instalou o Template0
Em 06/08/2015 14:22, Euler Taveira eu...@timbira.com.br escreveu: On 06-08-2015 14:08, Marcelo Silva wrote: Pessoal, instalei o PG 9.1 no meu linux mas ele nao criou o template0 então não consigo criar um bando com UTF8 Como resolver? 9.1.oque? Acho improvável já que o initdb iria falhar. Provavelmente alguém o apagou (?) após o initdb. O template1 ainda existe? Caso exista: CREATE DATABASE template0 TEMPLATE = template1; UPDATE pg_database set datistemplate = true WHERE datname = 'template0'; Fui tentar criar o template0 ele disse que já tem, mas não lista no pgadmin3, estranho. Então criei o banco usando o template0 manualmente e aceitou. Obrigado Euler Como você não detalhou o seu ambiente (ex.: um \l) pode ser que alguma coisa relativa a codificações não fiquem exatamente como antes. -- 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] PGCli – Autopreenchimento de comandos e destaques no PostgreSQL
PGCli http://pgcli.com/index é uma interface de linha de comando desenvolvida por Amjith Ramanujam https://github.com/amjith com suporte a autopreenchimento de comandos e destaques (highlighting) para o banco de dados PostgreSQL. PGCli se propõe a ser visualmente mais fácil de trabalhar exibindo destaques (highlighting) para a notação SQL conforme for digitando os comandos no console. http://www.infoq.com/br/news/2015/08/pgcli-postgresql Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Nao instalou o Template0
Pessoal, instalei o PG 9.1 no meu linux mas ele nao criou o template0 então não consigo criar um bando com UTF8 Como resolver? Grato, Marcelo da Silva - Skype: marc...@ig.com.br Fixo: (11) 2962-7390 Tim: (11) 9 5250-1407 – Whatsapp Vivo: (11) 9 9693-4251___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Habilitar acesso remoto e segurança
Bom dia pessoal, O serviço de hospedagem do cliente não habilita o acesso remoto do postgres, devido a segurança, isto procede? Vários serviços de hospedagens, grandes, habilitam esta funcionalidade. O problema é que eu preciso habilitar o acesso remoto para poder trabalhar com ferramentas locais e claro, é muito mais tranquilo trabalhar local e depois sincronizar a base -- ** *Marcelo Moacir Florindo* *Analista/Desenvolvedor* *http://www.bbfweb.com.br http://www.bbfweb.com.br* *skype: marcelo.moacir.florindo* ** ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Habilitar acesso remoto e segurança
Mas Matheus, o que eu preciso saber é se realmente tem este problema que relatam, pois muitos serviços de hospedagem trabalham com liberação do acesso remoto... Em 7 de abril de 2015 08:27, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-04-07 8:25 GMT-03:00 Marcelo Moacir Florindo marceloflori...@gmail.com: O problema é que eu preciso habilitar o acesso remoto para poder trabalhar com ferramentas locais e claro, é muito mais tranquilo trabalhar local e depois sincronizar a base Você tem acesso SSH ao servidor? Se tiver você pode simplesmente configurar um túnel SSH. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- ** *Marcelo Moacir Florindo* *Analista/Desenvolvedor* *http://www.bbfweb.com.br http://www.bbfweb.com.br* *skype: marcelo.moacir.florindo* ** ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Habilitar acesso remoto e segurança
Perguntei isto porque várias empresas de hospedagens liberam... Pois desenvolver aqui e ficar enviando para o servidor para testar. não tem condições. Em 7 de abril de 2015 09:57, Glauco Torres torres.gla...@gmail.com escreveu: Mas Matheus, o que eu preciso saber é se realmente tem este problema que relatam, pois muitos serviços de hospedagem trabalham com liberação do acesso remoto... Além do ssh-tunnel, você pode sugerir que eles façam um NAT somente para o seu IP, claro dai você vai ter que ter um IP fixo. Como o Matheus já falou fazer um NAT para escancarado para a internet é arriscado mesmo, mais VPN dependendo do modo que é feito é tão perigoso quanto. Att Glauco ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- ** *Marcelo Moacir Florindo* *Analista/Desenvolvedor* *http://www.bbfweb.com.br http://www.bbfweb.com.br* *skype: marcelo.moacir.florindo* ** ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Postgres Embarcado- Existe?
Pessoal, existe postgres embarcado? Ou uma versão de instalação sem intervenção do usuario, mas levando em conta que já pode existir postgres na máquina. Gostaria de distribuir algumas aplicações simples, porem com um banco de dados robusto. Pensei em usar o SQLite só pra localhost, mas como uso Posgres nas minhas aplicações em rede, gostaria de manter o padrão. Marcelo Silva --- Skype: marc...@ig.com.br Fixo: (11) 2962-7390 Tim: (11) 9 5250-1407 – ZapZap Vivo: (11) 9 9693-4251 MVSoftware – www.mvsoftware.com.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] Sistema financeiro em PostgreSQL
From: Carlos Antônio Pereira (VidaUTI) Sent: Friday, March 20, 2015 10:37 AM To: Comunidade PostgreSQL Brasileira Subject: [pgbr-geral] Sistema financeiro em PostgreSQL Bom dia, senhores. Alguém conhece algum Sistema Financeiro (Contas a pagar e receber, etc) que use o PostgreSQL como base de dados? Att Carlos Antônio Pereira Não sei do que precisa, mas a titulo de informação Eu tenho um ERP para segurança do trabalho com o financeiro, tudo em Delphi e Postgres Marcelo Silva Skype: marc...@ig.com.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] Consulta lenta
Olha, vou te atazanar neste assunto Essa cultura que vem de aplicações Desktop, lá dos primordios dos DBFs onde se usavam TTables, cultura muito usada no Clipper também. Entendo que é muito bom você trabalhar com registros em Cache, mas hoje em dia com o numero de informações que trabalhamos não é viável. Você não só prejudica o usuário da maquina que quer todos esses registros, como toda a rede. Imagino que você deve estar usando Query.Filter, é rápido quando o grid já está carregado, mas com o tempo sua aplicação vai começar a travar legal. Eu já tive este problema com usuários que queriam trabalhar com esse monte de registros abertos, mas resolvi encaram de frente e mudar essa política. Hoje meus Grids, trazem os 50 ultimos registros, e a tela de pesquisa dá a opção pro cara trazer os registros conforme precisa, mas nesta pesquisa ele pode trazer 1 ou todos os registros... mas aí ele já sabe que se puxar todos os sistema vai ficar mais lento, ou seja transferi essa responsabilidade pra ele. De inicio como trago somente os 50 ultimos em todas as maquinas, o servidor não sobrecarrega nem a rede. Com o tempo o usuário acaba aprendendo a trabalhar com menos registros e nem sente falta dos famigerados (todos registros). Ou seja, a opção está lá, mas ele usa quando quer. Sinceramente, ainda não consegui encontrar uma boa explicação (ou argumento) para se trabalhar com tantos registros assim. A questão de trazer registros conforme um filtro? Um select resolve isso tranquilamente e você trabalha com dados em tempo real, não corre o risco de informações obsoletas. Outra coisa que estou estudando é trabalhar como o facebook quando carrega os posts, conforme o cara vai chegando proximo dos ultimos registros vou trazendo mais. Mas devemos lembrar que o limite não está somente no servidor e rede, mas na maquina local, pois quando você traz essas informações e não cabe na memoria ele passa a fazer uso da memoria virtual (no disco) ai não tem jeito, fica lento mesmo. Marcelo Silva From: Junior Miranda Sent: Friday, March 13, 2015 1:47 PM To: Comunidade PostgreSQL Brasileira Subject: Re: [pgbr-geral] Consulta lenta Tentei fazer isso, é uma mudança de cultura e não foi bem recebida... outros bancos, como firebird, essa lentidão não é tão acentuada... Alguma sugestão dentro deste cenário?? Júnior Miranda Analista de Sistemas Especializando em Sistemas Computacionais E-mail: flmirandajun...@gmail.com Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020 Em 13 de março de 2015 13:43, Vinicius Santos vinicius.santos.li...@gmail.com escreveu: Porque não força o usuário a fazer o filtro antes? Abra a tabela depois que tiver o filtro. Em 13 de março de 2015 13:34, Junior Miranda flmirandajun...@gmail.com escreveu: O usuário visualiza todos num grid e a partir dai realiza os filtros que desejar. Júnior Miranda Analista de Sistemas Especializando em Sistemas Computacionais E-mail: flmirandajun...@gmail.com Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020 Em 13 de março de 2015 13:32, Junior Miranda flmirandajun...@gmail.com escreveu: Tenho uma consulta de produtos que possue, no momento, 20 mil registros. Infelizmente para esta consulta eu precisaria retornar todos para que a partir dai o usuário pudesse realizar os seus filtros. Com essa quantidade de registros apresenta uma lentidão na abertura da pesquisa. Não fetch X em X por que nem sem ele consegui retornar os registros. Júnior Miranda Analista de Sistemas Especializando em Sistemas Computacionais E-mail: flmirandajun...@gmail.com Tel.: (75) 9191-1678/ 34143042/ 34143149/ 34143020 Em 13 de março de 2015 13:27, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-03-13 13:26 GMT-03:00 Junior Miranda flmirandajun...@gmail.com: A questão é que inicialmente precisarei retornar todos os registro, e como a tendência é que eles aumentem um pouco, precisaria fazer FETCH de X em X para diminuir o gargalo na abertura. A tendência é que com o aumento essa lentidão aumente... Poucas informações para que possamos ajudar. Você diz pra fazer de X em X, mas você não fez isso. Pode compartilhar conosco o uso de tantos registros assim? Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ 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 ___ pgbr-geral mailing list pgbr-geral
Re: [pgbr-geral] 10 desvantagens do PostgreSQL em relação ao Oracle
Douglas, O ambiente de administração do oracle é apex……a Oracle está investindo pesadamente nele. Abraço, Marcelo Em 09/01/2015, à(s) 20:38, Douglas Fabiano Specht douglasfabi...@gmail.com escreveu: Em 9 de janeiro de 2015 17:33, Marcelo Florindo marceloflori...@gmail.com mailto:marceloflori...@gmail.com escreveu: Dentro deste comparativo, não só ao oracle banco, mas um item que gostaria de ver no postgres é o apex (apex.oracle.com http://apex.oracle.com/). Já imaginaram um ambiente de desenvolvimento utilizando o postgres de cabo a rabo?? Seria muito show! Abraço a todos, Marcelo Em 09/01/2015, à(s) 17:10, Dadilton Melo dadil...@gmail.com mailto:dadil...@gmail.com escreveu: Olá pessoal, Me metendo nessa conversa de gente grande, não sei se é exatamente uma desvantagem, mas o fato de o postgresql não utilizar mais que um core de cpu por consulta (Query) pode se revelar um problema em alguns ambientes. Este assunto já é discutido em http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com , e pelo que parece, estão tentando implementar isso no PostgreSQL. Já vi que houve alguma discussão aqui sobre isso e já falaram que as consultas paralelas do ORACLE servem como gambiarra para resolver o problema de performance de consultas mal feitas. Mas a verdade é que, em alguns casos, isso realmente pode se mostrar uma boa forma de melhorar o desempenho do sistema. Até mesmo porque o DBA, infelizmente, não pode contar muito com o conhecimento do desenvolvedor ao fazer suas consultas na base de dados. Além do mais, as consultas paralelas não funcionam sempre, mas só em alguns casos, por exemplo, quando é necessário fazer um full table scan, ou quando numa mesma consulta existem blocos que, separados, podem trazem resultados independentes, etc. Sem falar que consomem mais recursos de hardware. Além do mais, a ORACLE deu um jeito de permitir gambiarra, e permite a execução do seguinte comando ALTER SESSION FORCE PARALLEL QUERY. para forçar o uso de vários cores de CPU. Tem mais alguns detalhes aqui http://www.dba-oracle.com/art_builder_opq_cpu.htm http://www.dba-oracle.com/art_builder_opq_cpu.htm Corrijam-me, em caso de eu haver falado besteira, por favor :) Já me falaram até que o fato de o ORACLE permitir HINTs (para ignorar obrigar o uso de índices, ou consultas paralelas - coisa que o PostgreSQL não tem) já indicam que o otimizador de consultas dele pode não ser lá muito eficiente. Mas aí já é outro papo, rs. Abraços. Em 9 de janeiro de 2015 16:06, Fabiano Machado Dias fabi...@wolaksistemas.com.br mailto:fabi...@wolaksistemas.com.br escreveu: Postgres 9.4 : Aggregate FILTER clause (Uma mão na roda!) Abraço, Fabiano Machado Dias Em 9 de janeiro de 2015 15:58, Cleysson Lima listapostgre...@gmail.com mailto:listapostgre...@gmail.com escreveu: Hehehe concordo com o Flávio :) Tópico - Certificação Em 9 de janeiro de 2015 12:13, Flavio Henrique Araque Gurgel fha...@gmail.com mailto:fha...@gmail.com escreveu: Eu sei, eu sei... mas existem né? Nem tudo é perfeito AINDA. Comecei a escrever uma trilogia comparando o Oracle com o PostgreSQL e queria saber na opinião de vocês onde vocês acham que o Oracle leva vantagem sobre o PostgreSQL. Sem flames, por favor!!! Troll pode? Vantagem Oracle: Larry Ellison é bilionário. Desvantagem PostgreSQL: Tom Lane bebe cerveja na PgCon. Mas eu acho que o segundo se diverte mais :) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Dadilton Bastos Melo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https
[pgbr-geral] Envio de email
Boa tarde colegas, Alguém aqui envia email através do postgres??? Grato a todos, Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Controle de transação - Delphi
Usava: Zeoslib Unidac Att, Marcelo Em 09/01/2015, à(s) 17:41, Fernando Cambiaghi cambia...@gmail.com escreveu: Marcelo, se você não usava odbc, que conector você usava? Nos parâmetros do odbc eu pesquisei sobre autocommit, mas não encontrei. Na conexão com o banco Sybase eu uso autocommit=false, com isso não preciso iniciar as transações. Em 09/01/2015 17:37, Marcelo Florindo marceloflori...@gmail.com mailto:marceloflori...@gmail.com escreveu: Ele está se perdendo no select, parece que ele está executando tudo de uma vez… Eu trabalhei algum tempo com delphi…. e nunca usei odbc.. Tu não precisas informar nada no odbc ou no componente conexão sobre a transação Att, Marcelo Em 09/01/2015, à(s) 12:49, Fernando Cambiaghi cambia...@gmail.com mailto:cambia...@gmail.com escreveu: Bom dia Colegas, estou com um problema e não encontrei solução com buscas no Google, então gostaria da ajuda dos senhores. Tenho uma conexão com PostgreSQL via odbc e aplicação em Delphi 7 Ao executar um insert com controle de transação, o PostgreSQL gera o erro 2015-01-09 10:08:16 BRT ERROR: syntax error at or near SELECT at character 16 2015-01-09 10:08:16 BRT STATEMENT: SELECT INVALID SELECT STATEMENT TO FORCE ODBC DRIVER TO UNPREPARED STATE no log, e o insert não acontece, mas também não retorna erro para a aplicação. Então, ao executar os inserts das tabelas filhas, temos os erros de FK. Se o controle de transação for removido da aplicação, o commit acontece automaticamente, o que gera problema se algum dos inserts posteriores não der certo, pois não tenho a opção de Rollback. Comandos da aplicação: TADOCommand. Connection.BeginTrans; // Controla o início da transação . sequencia de inserts ... ... Controle de conclusão de transação. TADOCommand.Connection.CommitTrans; ou TADOCommand.Connection.RollbackTrans; Versão do Banco PostgreSQL 9.4.0, compiled by Visual C++ build 1800, 64-bit Quem poderá me ajudar? Fernando Luís Cambiaghi cambia...@gmail.com mailto:cambia...@gmail.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] 10 desvantagens do PostgreSQL em relação ao Oracle
Dentro deste comparativo, não só ao oracle banco, mas um item que gostaria de ver no postgres é o apex (apex.oracle.com http://apex.oracle.com/). Já imaginaram um ambiente de desenvolvimento utilizando o postgres de cabo a rabo?? Seria muito show! Abraço a todos, Marcelo Em 09/01/2015, à(s) 17:10, Dadilton Melo dadil...@gmail.com escreveu: Olá pessoal, Me metendo nessa conversa de gente grande, não sei se é exatamente uma desvantagem, mas o fato de o postgresql não utilizar mais que um core de cpu por consulta (Query) pode se revelar um problema em alguns ambientes. Este assunto já é discutido em http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com http://www.postgresql.org/message-id/48fcd67d.4070...@sun.com , e pelo que parece, estão tentando implementar isso no PostgreSQL. Já vi que houve alguma discussão aqui sobre isso e já falaram que as consultas paralelas do ORACLE servem como gambiarra para resolver o problema de performance de consultas mal feitas. Mas a verdade é que, em alguns casos, isso realmente pode se mostrar uma boa forma de melhorar o desempenho do sistema. Até mesmo porque o DBA, infelizmente, não pode contar muito com o conhecimento do desenvolvedor ao fazer suas consultas na base de dados. Além do mais, as consultas paralelas não funcionam sempre, mas só em alguns casos, por exemplo, quando é necessário fazer um full table scan, ou quando numa mesma consulta existem blocos que, separados, podem trazem resultados independentes, etc. Sem falar que consomem mais recursos de hardware. Além do mais, a ORACLE deu um jeito de permitir gambiarra, e permite a execução do seguinte comando ALTER SESSION FORCE PARALLEL QUERY. para forçar o uso de vários cores de CPU. Tem mais alguns detalhes aqui http://www.dba-oracle.com/art_builder_opq_cpu.htm http://www.dba-oracle.com/art_builder_opq_cpu.htm Corrijam-me, em caso de eu haver falado besteira, por favor :) Já me falaram até que o fato de o ORACLE permitir HINTs (para ignorar obrigar o uso de índices, ou consultas paralelas - coisa que o PostgreSQL não tem) já indicam que o otimizador de consultas dele pode não ser lá muito eficiente. Mas aí já é outro papo, rs. Abraços. Em 9 de janeiro de 2015 16:06, Fabiano Machado Dias fabi...@wolaksistemas.com.br mailto:fabi...@wolaksistemas.com.br escreveu: Postgres 9.4 : Aggregate FILTER clause (Uma mão na roda!) Abraço, Fabiano Machado Dias Em 9 de janeiro de 2015 15:58, Cleysson Lima listapostgre...@gmail.com mailto:listapostgre...@gmail.com escreveu: Hehehe concordo com o Flávio :) Tópico - Certificação Em 9 de janeiro de 2015 12:13, Flavio Henrique Araque Gurgel fha...@gmail.com mailto:fha...@gmail.com escreveu: Eu sei, eu sei... mas existem né? Nem tudo é perfeito AINDA. Comecei a escrever uma trilogia comparando o Oracle com o PostgreSQL e queria saber na opinião de vocês onde vocês acham que o Oracle leva vantagem sobre o PostgreSQL. Sem flames, por favor!!! Troll pode? Vantagem Oracle: Larry Ellison é bilionário. Desvantagem PostgreSQL: Tom Lane bebe cerveja na PgCon. Mas eu acho que o segundo se diverte mais :) ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Dadilton Bastos Melo ___ 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] REF: INSERT tem mais expressões do que colunas alvo.
Tens que converter ou colocar entre aspas o valor númerico. A virgula para ele é mais um expressão! Em 09/01/2015, à(s) 11:52, Luiz Rafael Culik l...@xharbour.com.br escreveu: Buenas Acho que o problema e seu valor numerico, ele esta usando , em vez de . []s Luiz Em 9 de janeiro de 2015 11:45, Paulo Afonso Pereira pa...@visualpsistemas.com.br mailto:pa...@visualpsistemas.com.br escreveu: Olá Pessoal, Estou estranhando este erro. Não consegui achar o problema. Os dados estão vindo de um XML de retorno do banco. Não sei se é algum tipo de dado estranho, causando isso. CREATE TABLE tabela_ofx ( idreg serial NOT NULL, datalan date NOT NULL, valorlan numeric(18,2), trancrdr character varying(10), tranidbc character varying(10), checknum character varying(20), refnum character varying(20), tramemo character varying(200), CONSTRAINT pk_idreg PRIMARY KEY (idreg ) ); INSERT INTO tabela_ofx (datalan, valorlan, trancrdr, tranidbc, checknum, refnum, tramemo) VALUES ('2015-01-07', 533,57, 'CREDIT', 'N10043', '1911127', '', 'RESGATE DE PAPEIS'); ERRO: INSERT tem mais expressões do que colunas alvo LINE 4: ...1-07', 533,57, 'CREDIT', 'N10043', '1911127', '', 'RESGATE D... ** Error ** ERRO: INSERT tem mais expressões do que colunas alvo SQL state: 42601 Character: 159 ALGUMA DICA ? Obrigado, Paulo. http://www.avast.com/ Este email foi escaneado pelo Avast antivírus. www.avast.com http://www.avast.com/ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problema UTF8 e LATIN1
Fiz uma nova base de dados com encoding UTF8 e restaurei nela… e agora está redondo. Valeu! Em 08/01/2015, à(s) 13:17, Marcelo Silva marc...@ig.com.br escreveu: Colega isso é muito comum quanto o usuário copia e cola um texto da web ou Word, depois quando você vai abrir no delphi por exemplo da uns pau. A solução é tratar o texto. Enviado por Samsung Mobile Mensagem original De : Flavio Henrique Araque Gurgel Data:08/01/2015 08:51 (GMT-03:00) Para: pgbr-geral@listas.postgresql.org.br Assunto: Re: [pgbr-geral] Problema UTF8 e LATIN1 Bom dia colegas, minha aplicação apresenta o seguinte erro: “UTF8” has no equivalent in encoding “LATIN1” Sua aplicação ou o banco de dados? Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos aparecem com caracter estranho ? Como eu poderia resolver isto?? Se sua aplicação não pode usar Latin1, continue usando UTF8 oras. Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de dados e qual o encoding da aplicação? Se o banco de dados estiver em UTF8 e você setar client_encoding como Latin1 não dá certo porque alguns caracteres do UTF8 não existem no Latin1, o inverso funciona. []s Flavio Gurgel ___ 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 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Erro de coluna indefinida
Colegas, Estou começando a usar os recursos do banco para ter produtividade. Porém, mesmo pesquisando no google, estou fazendo algo errado (com certeza) O aplicativo me apresenta este erro: SQLSTATE[42703]: Undefined column: 7 ERROR: column p_nome_tabela does not exist LINE 1: ... '||p_nome_campo||' from into'||ordem_atual||’ O meu script é este: CREATE OR REPLACE FUNCTION ordenar_ordem_grid( p_tabela text, p_nome_campo text, p_novo_valor integer, p_id integer) RETURNS void AS $BODY$ DECLARE registro record; ordem int; ordem_atual int; BEGIN -- se ordem atual diferente da ordem do parametro executar processo execute 'select '||p_nome_campo||' from into'||ordem_atual||' '||p_nome_tabela||' where id='||p_id; (A LINHA DO ERRO) if (ordem_atualp_ordem) then -- atualizar posicao atual execute 'update '||p_tabela||' set '||p_nome_campo||'='||p_novo_valor||'+1 where '||p_nome_campo||'='||p_novo_valor; -- atualizar nova posicao execute 'update '||p_tabela||' set '||p_nome_campo||'='||p_novo_valor||' where '||'id='||p_id; -- inicializacao da ordem ordem = 1; -- selecionar todos e corrigir a ordem FOR registro IN EXECUTE 'select * from '|| p_tabela ||' order by '|| p_nome_campo LOOP execute 'update '||p_tabela||' set '||p_nome_campo||'='||ordem||' where '||'id'||'='||registro.id; ordem = ordem + 1; END LOOP; end if; END; $BODY$ LANGUAGE plpgsql Alguma ideia colegas??? Obrigado a todos Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problema UTF8 e LATIN1
Flavio, Minha aplicação está em UFT8 e o banco LATIN1 - E quando envio um texto está dando o erro: “UTF8” has no equivalent in encoding “LATIN1” Se altero a minha aplicação para LATIN1 os caracteres acentuados viram ? (ESTOU USANDO PHP) Pelo que entendi parece-me que a solução mais provável (pesquisando) seria refazer o banco de dados para UTF8, correto? Grato! Em 08/01/2015, à(s) 08:51, Flavio Henrique Araque Gurgel fha...@gmail.com escreveu: Bom dia colegas, minha aplicação apresenta o seguinte erro: “UTF8” has no equivalent in encoding “LATIN1” Sua aplicação ou o banco de dados? Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos aparecem com caracter estranho ? Como eu poderia resolver isto?? Se sua aplicação não pode usar Latin1, continue usando UTF8 oras. Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de dados e qual o encoding da aplicação? Se o banco de dados estiver em UTF8 e você setar client_encoding como Latin1 não dá certo porque alguns caracteres do UTF8 não existem no Latin1, o inverso funciona. []s Flavio Gurgel ___ 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] Ordenando conforme itens na clausula in
Valeu pessoal! Utlizei a função e fechou! CREATE OR REPLACE FUNCTION fordenacao( vfield text, vin text) RETURNS text AS $BODY$ DECLARE vorder integer DEFAULT 1; vindice integer; vcodigo integer[] DEFAULT string_to_array(vin,',')::integer[]; vordenacao text DEFAULT ''; BEGIN FOR vindice IN array_lower(vcodigo,1)..array_upper(vcodigo,1) LOOP vordenacao := vordenacao||' WHEN '||vcodigo[vindice]::text||' THEN '||vorder::text; vorder := vorder + 1; END LOOP; vordenacao := '(CASE '||vfield||' '||vordenacao||' END)'; RETURN vordenacao; END; $BODY$ LANGUAGE Muito obrigado pessoal! Em 08/01/2015, à(s) 08:28, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-01-07 16:32 GMT-02:00 Sebastian Webber sebastian...@gmail.com mailto:sebastian...@gmail.com: -- workaround starts DROP SEQUENCE IF EXISTS temp_seq; CREATE TEMP sequence temp_seq; -- workaround ends WITH items_parafiltrar as ( SELECT UNNEST(ARRAY[1,5,20,12]) AS filtro ), lista as ( SELECT nextval('temp_seq') As row_number, items_parafiltrar.filtro as item FROM items_parafiltrar ) SELECT foo.id http://foo.id/, foo.name http://foo.name/ , lista.row_number FROM foo, lista where foo.id http://foo.id/ = lista.item order by lista.row_number; Nossa cara, desculpe, mas por favor não faça isso. Criar uma sequence (mesmo temporária) para ter algo que uma simples WINDOW FUNCTION row_number (o mesmo do seu alias) já faz, me parece péssimo, além disso para array o generate_subscripts já resolve, você viu a solução que eu propus? De qualquer forma a ideia de um JOIN com o resultado do unnest pode não ser ruim, mas seria interessante testar bem a diferença de performance desse método, sei que para grandes listas isso pode ser melhor que usar IN, mas é difícil determinar o que é grande. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres http://www.dextra.com.br/postgres/ ___ 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
[pgbr-geral] Problema UTF8 e LATIN1
Bom dia colegas, minha aplicação apresenta o seguinte erro: “UTF8” has no equivalent in encoding “LATIN1” Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos aparecem com caracter estranho ? Como eu poderia resolver isto?? Muito obrigado a todos! Att, Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Problema UTF8 e LATIN1
Colega isso é muito comum quanto o usuário copia e cola um texto da web ou Word, depois quando você vai abrir no delphi por exemplo da uns pau. A solução é tratar o texto. Enviado por Samsung Mobile div Mensagem original /divdivDe : Flavio Henrique Araque Gurgel fha...@gmail.com /divdivData:08/01/2015 08:51 (GMT-03:00) /divdivPara: pgbr-geral@listas.postgresql.org.br /divdivAssunto: Re: [pgbr-geral] Problema UTF8 e LATIN1 /divdiv /div Bom dia colegas, minha aplicação apresenta o seguinte erro: “UTF8” has no equivalent in encoding “LATIN1” Sua aplicação ou o banco de dados? Se eu alterar o encoding da minha aplicação para Latin1 todos os acentos aparecem com caracter estranho ? Como eu poderia resolver isto?? Se sua aplicação não pode usar Latin1, continue usando UTF8 oras. Na verdade, não entendi bem sua pergunta. Qual o encoding do banco de dados e qual o encoding da aplicação? Se o banco de dados estiver em UTF8 e você setar client_encoding como Latin1 não dá certo porque alguns caracteres do UTF8 não existem no Latin1, o inverso funciona. []s Flavio Gurgel ___ 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] Ordenando conforme itens na clausula in
Matheus, Para mim funcionou pois eu retorno uma string e depois que irei executar. Grato, Marcelo Em 08/01/2015, à(s) 13:12, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2015-01-08 8:32 GMT-02:00 Marcelo Florindo marceloflori...@gmail.com mailto:marceloflori...@gmail.com: CREATE OR REPLACE FUNCTION fordenacao( vfield text, vin text) RETURNS text AS $BODY$ DECLARE vorder integer DEFAULT 1; vindice integer; vcodigo integer[] DEFAULT string_to_array(vin,',')::integer[]; vordenacao text DEFAULT ''; BEGIN FOR vindice IN array_lower(vcodigo,1)..array_upper(vcodigo,1) LOOP vordenacao := vordenacao||' WHEN '||vcodigo[vindice]::text||' THEN '||vorder::text; vorder := vorder + 1; END LOOP; vordenacao := '(CASE '||vfield||' '||vordenacao||' END)'; RETURN vordenacao; END; $BODY$ LANGUAGE Muito obrigado pessoal! Marcelo, Como eu já comentei em [1], essa função está incorreta. Ou estou enganado e alguém quer me ajudar a entender como isso seria uma solução correta? [1] http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg39367.html http://www.mail-archive.com/pgbr-geral@listas.postgresql.org.br/msg39367.html Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres http://www.dextra.com.br/postgres/ ___ 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
[pgbr-geral] Ordenando conforme itens na clausula in
Boa noite colegas, Eu tenho este sql: Select * from fabricante where id in (10,14,29,49,20) Preciso que o select venha na mesma ordem do in, alguma ideia? Grato a todos e feliz 2015!!! Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ordenando conforme itens na clausula in
Marcos, No meu caso os valores são dinâmicos. Existe alguma forma de automatizar isto? Obrigado! Marcelo Em 06/01/2015, à(s) 22:24, Marcos Thomaz marcosthom...@gmail.com escreveu: order by (case when 10 then 1 when 14 then 2 when 29 then 3 when 49 then 4 when 20 then 5 end) Em 6 de janeiro de 2015 19:19, Marcelo Florindo marceloflori...@gmail.com mailto:marceloflori...@gmail.com escreveu: Boa noite colegas, Eu tenho este sql: Select * from fabricante where id in (10,14,29,49,20) Preciso que o select venha na mesma ordem do in, alguma ideia? Grato a todos e feliz 2015!!! Marcelo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br mailto:pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcos Thomaz da Silva Analista de Tecnologia da Informação ___ 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
[pgbr-geral] PostgreSQL vs MS SQL Server
Muito boa esta análise. http://www.pg-versus-ms.com I work as a data analyst in a global professional services firm (one you have certainly heard of). I have been doing this for about a decade. I have spent that decade dealing with data, database software, database hardware, database users, database programmers and data analysis methods, so I know a fair bit about these things. I frequently come into contact with people who know very little about these things – although some of them don't realise it http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect. Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Enquete no Y Combinator/Hackernews
Qual é o banco de dados que você ou sua empresa utilizam https://news.ycombinator.com/item?id=7729603 Marcelo Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Alterar um element/node JSON/XML
On Tue, Mar 25, 2014 at 5:46 PM, Renato Poleti ren...@poleti.com.br wrote: Boa tarde a todos, Caros, preciso de uma função pl/pgSQL ou nativo do postgresql para alterar um element/node de um JSON e XML. Este link faz a mesma pergunta: http://dba.stackexchange.com/questions/54663/how-can-i-update-a-json-element-in-postgresql-json-datatype Na pratica seria +/- assim: JSON UPDATE table SET coluna::json#'{a,2}'='outro valor' WHERE id=1; --coluna= '{a:[1,2,3],b:[4,5,6]}' XML UPDATE table SET xpath('/my:a/text()',coluna)='outro valor' WHERE id=1; --coluna= ' my:a xmlns:my=http://example.com;test/my:a' Obrigado Você já usou hstore como tipo de dado? Marcelo Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Conexão com banco de dados
Eu uso o Zeos no XE tranquilo From: Pedro B. Alves Sent: Thursday, February 13, 2014 10:06 AM To: Comunidade PostgreSQL Brasileira Subject: [pgbr-geral] Fwd: Conexão com banco de dados Pessoal, Uso a muito tempo o Zeos com D7 para fazer a conexão com meu banco de dados em PostgreSQL. Estou migrando minhas Aplicações parar XE5. Todavia o XE5 possui o componente FireDAC que já possui configuração para conexão com o PostgreSQL. Peço aos colegas, se alguém sabe algo de qual componente é melhor pra mim fazer a conexão com os dados? ___ 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] Postgre embarcado? é Possivel?
Dentro deste mesmo tópico, Sei que Instalar o gerenciador do DB e Embarcado tem muita diferença. Sei que o Firebird tem uma versão embarcada, mas não sei se está continuada. Vejo algumas aplicações que instalam MySQL ou Firebird (não embarcados) já na instalação do aplicativo... O Postgres possui alguma versão neste sentido, onde poderiamos setar os parametros e instalar o Postgres de modo automático (sem nenhuma intervenção)? Caso sim, Se o cara já tiver um Postgres na mesma máquina, não teremos problemas? Marcelo Silva -- -Mensagem Original- From: Flavio Henrique Araque Gurgel Sent: Thursday, January 30, 2014 9:08 AM To: pgbr-geral@listas.postgresql.org.br Subject: Re: [pgbr-geral] Postgre embarcado? é Possivel? Tem como usar o postgres embarcado numa aplicação java? Não. O PostgreSQL não foi desenhado para isso. Pelo menos que o instalador já instale o .jar e o banco? Isso você pode fazer. Diga qual seu objetivo exato. Normalmente recebemos uma pergunta A mas seu problema pode ser B e uma solução pode existir. []s Flavio Gurgel ___ 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
[pgbr-geral] Americam Express usando o Elefante???
Olhem o campo Client no anexo. Sempre que recebo esses emails fico imaginando a quantidade de empresas no mundo que usam o elefante e não revelam. Conheço um dos TOP 3 bancos privado no Brasil que faz uso do elefante mas faz questão de esconder. Já recebi ligação as 3:00 da matina para ajudar um amigo em apuros. PostgreSQL Opportunity Available Please contact me if you are interested! Andrew VanderWerfhttp://www.linkedin.com/profile/view?id=165450757goback=%2Egde_51776_member_5826748437512605696Technical Recruiter at Experis IT http://recruiterav.wordpress.com/2014/01/08/postgresql-developer/http://www.linkedin.com/redirect?url=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUv_t=tracking_anet http://www.linkedin.com/news?viewArticle=articleID=9090562285833201045gid=51776type=memberitem=5826748437512605696articleURL=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUvgoback=%2Egde_51776_member_5826748437512605696 PostgreSQL Developerhttp://www.linkedin.com/news?viewArticle=articleID=9090562285833201045gid=51776type=memberitem=5826748437512605696articleURL=http%3A%2F%2Frecruiterav%2Ewordpress%2Ecom%2F2014%2F01%2F08%2Fpostgresql-developer%2Furlhash=qmUvgoback=%2Egde_51776_member_5826748437512605696 recruiterav.wordpress.com Job Title: PostgreSQL Developer *Client: American Express* Type: Contract Duration: 12 Months Start Date: 1-13-2014 TOP 3 SKILLS: PostgreSQL Development and Scripting query creation and analysis SQL ... Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] RES: Extensões mais úteis para o PostgreSQL
Pessoal não estou discutindo minhas necessidades de extensão. Estou pedindo relatos de extensões que vocês costumam utilizar. Depois que levantar isso vou analisar e escrever sobre elas. Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa 2014/1/8 Bruno Silva bemanuel...@gmail.com 2014/1/8 Celso - Gmail clorenzett...@gmail.com: Pessoal, Estou aceitando dicas de extensões para o elefante que vocês considerem mais úteis em seu dia a dia. Basta apenas indicar a extensão sem precisar se extender explicando o motivo. Aguardo as respostas, estou escrevendo sobre isso para o InfoQ Brasil. Depende, tem de ver quais são as suas necessidades. No geral: plpgsql Se for migração de Oracle para Postgres: ora2fce Se for interligação de clusters Postgres: Postgres_FDW Se for administração do banco: adminpack, pg_buffercache, pg_freespacemap, pg_stat_statements,pgrowlocks, pgstattuple Se for índice: pg_trgm, btree_gist, btree_gin Bruno E. A. Silva. Analista de Sistemas. ___ 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
[pgbr-geral] Extensões mais úteis para o PostgreSQL
Pessoal, Estou aceitando dicas de extensões para o elefante que vocês considerem mais úteis em seu dia a dia. Basta apenas indicar a extensão sem precisar se extender explicando o motivo. Aguardo as respostas, estou escrevendo sobre isso para o InfoQ Brasil. Atte, Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] PostgreSQL Armazenando dados em formato Schemaless (hstore)
Olá, boa noite Críticas e sugestões são muito bem vindas. http://www.infoq.com/br/articles/postgresql-schemaless Atte, Marcelo Costa - http://www.infoq.com/br/author/Marcelo-Costa ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Automatizar processo em determinada hora tem como?
Se for Linux tem alternativas como: CRON : http://www.vivaolinux.com.br/artigo/Usando-cron-e-crontab-para-agendar-tarefas ou pelo WebAdmin (gratuito) : http://www.webmin.com/ que é muito bom pra gerenciar o Servidor de longe. Em 4 de setembro de 2013 08:23, Rafael Fialho Corrêa r.fia...@ibest.com.brescreveu: pgAgent.. Ele tem schedules (para colocar horários e dias determinados) e jobs (passos que serão realizados) que podem ser tanto em SQL, quanto em arquivos do tipo .bat, .sh, etc.. Dependendo do SO da um trabalhinho pra configurar, mas funciona muito bem... []'s Em 4 de setembro de 2013 08:15, Rudimar corsar...@gmail.com escreveu: Pessoal, existe alguma forma no PostgreSQL de eu agendar alguns updates para rodar em determinada hora? ___ 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Existe isso, Funcao dentro de Funcao ?
Pessoal, posso criar uma função no postgres e dentro dela uma subfunção ? Exemplo: CREATE OR REPLACE FUNCTION fcontatos(integer, integer) RETURNS character varying AS $BODY$ begin Function SubFuncao(Parametros) Returns text as ... FimDaSubFuncao TrataDadosDaPrimeiraFuncao Return = Chama SubFuncao(parametros) end; Ou tenho que criar sempre funções separadas ? A ideia é simplesmente tratar um texto dentro da propria função pra traze-lo formatado conforme o numero de caracteres Exemplo: Funcao(Codigo) inicio SubFuncao(Texto) inicio condição1 retorna 1 condicao2 retorna2 fim subfuncao select numa tabela conforme o parametro retorna = SubFuncao(ResultadoDoSelect) fim funcao ps. Estou criando uma função para tratar a formatação de telefones conforme o novo padrão com 9 na frente e os antigos (11) 2962-7390 (11) 9 9693-4251 0800 753-8895 0800 7563-8966 E assim por diante, conforme o numero de caracter -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Insert é só pra tabela ?
Pessoal no Delphi tenho a função INSERT que serve para inserir uma string dentro da outra, por exemplo: S := insert('s', 'tete', 3); S = teste Existe alguma função que faça isso no postgres? Já procurei no manuel, mas não encontrei. -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Insert é só pra tabela ?
Com a ajuda do colegas cheguei a uma função que vai me ajudar, segue aí pra quem precisar: Primeiro criamos a função de insert, chamei de finsert pra não confundir com insert do SQL :) CREATE OR REPLACE FUNCTION finsert(text, text, integer) RETURNS text AS $BODY$ select overlay($2 placing $1 from $3 for 0); $BODY$ LANGUAGE sql IMMUTABLE COST 100; ALTER FUNCTION finsert(text, text, integer) OWNER TO postgres; Então criamos a função para formatar os telefones conforme o numero de caractere, que deve ter no minimo 10 digitos CREATE OR REPLACE FUNCTION fgetmascfone(text) RETURNS character varying AS $BODY$ declare fone text; begin fone = $1; if (length(fone) 10) then fone = right(' '||fone, 10); -- caso não haja DDD colocamos 10 caracteres no minimo end if; if (left(fone, 4) = '0800') then case when length(fone) in(10,11) then fone = finsert(' ', fone, 5); fone = finsert('-', fone, 9); when length(fone) in(12) then fone = finsert(' ', fone, 5); fone = finsert('-', fone, 10); when length(fone) in(13,14) then fone = finsert(' ', fone, 5); fone = finsert('-', fone, 10); fone = finsert('-', fone, 15); else fone = fone; end case; else case when length(fone) in(9) then fone = finsert('(', fone, 1); fone = finsert(') ', fone, 4); fone = finsert('-', fone, 9); when length(fone) in(10) then fone = finsert('(', fone, 1); fone = finsert(') ', fone, 4); fone = finsert('-', fone, 10); when length(fone) in(11) then fone = finsert('(', fone, 1); fone = finsert(') ', fone, 4); fone = finsert('-', fone, 7); fone = finsert('-', fone, 12); when length(fone) in(12,13,14) then fone = finsert('(', fone, 1); fone = finsert(') ', fone, 4); fone = finsert('-', fone, 7); fone = finsert('-', fone, 12); fone = finsert('-', fone, 17); else fone = fone; end case; end if; return fone; end; $BODY$ LANGUAGE plpgsql IMMUTABLE COST 100; ALTER FUNCTION fgetmascfone(text) OWNER TO postgres; A função foi feito meio na correria, mas pelos testes está a contento :) depois (bem depois rsrsrs) dou mais uma garimpada. Fica aí pra quem precisar Obrigado a todos mais uma vez... Marcelo Silva --- Em 3 de setembro de 2013 12:37, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2013/9/3 Juliano Atanazio juliano.l...@gmail.com Em 3 de setembro de 2013 12:23, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2013/9/3 Marcelo da Silva marc...@ig.com.br Pessoal no Delphi tenho a função INSERT que serve para inserir uma string dentro da outra, por exemplo: S := insert('s', 'tete', 3); S = teste Existe alguma função que faça isso no postgres? Já procurei no manuel, mas não encontrei. Existe a função overlay [1]: SELECT overlay('tete' placing 's' from 3 for 0); Você pode criar uma insert +ou- assim: CREATE FUNCTION insert(text,text,int) RETURNS TEXT LANGUAGE SQL AS $$ SELECT overlay($1 placing $2 from $3 for 0); $$; [1] http://www.postgresql.org/docs/current/static/functions-binarystring.html O exemplo do Matheus foi muito mais objetivo rs De qualquer forma é bom ter uma certa variedade de formas de fazer a mesma coisa. =D Adicionalmente, este link [1] tem funções de tratamento de strings no PostgreSQL. Extremamente útil :) [1] http://www.postgresql.org/docs/9.2/static/functions-string.html Faz mais sentido que o link que eu mandei... aliás, o link que eu mandei não faz sentido algum (é pra bytea, apesar de ter a mesma função), considerem este do Juliano, xD... Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Delphi + Zeos: Alterar campos de tabela via trigger
Olha vou dar um xutão aqui... Se estiver executando sua Trigger num ZQuery normal, possivelmente ele vai dar erro porque o ZQuery precisa de um retorno do SQL Em outras palavras, ele serve pra SELECT * FROM TABELA Assim como o ZUpdate serve pra UPDATE :-) Pra executar Procedures e Triggers do banco você deve executar diretamente no SQL direto Exemplo: var zqrLocal: TZQuery; begin zqrLocal := TZQuery.Create(nil); zqrLocal.Connection := SeuZconecta; zqrLocal.Close; zqrLocal.SQL.Add('SEU SQL'); zqrLocal.ExecSQL; FreeAndNil(zqrLocal); end; Veja ai se funciona Marcelo Silva --- Em 3 de setembro de 2013 17:35, Rafael Fialho Corrêa r.fia...@ibest.com.brescreveu: Já passei por algo parecido sim, Rafael. Normalmente o erro estava no próprio SQL repassado ao Zeos. Eu utilizo sempre esta estrutura para escrita/edição de dados: select * from tabela where id_tabela = :id_tabela Neste caso, ao efetuar insert ou update, o sistema sempre se comporta de maneira correta. De qualquer forma, creio que deves verificar as propriedades do teu TZQuery, antes de mais nada, e verificar se a estrutura de query repassada ao componente está de maneira simples e filtrada. Em 3 de setembro de 2013 17:06, Rafael Naves emaildorafaelna...@gmail.com escreveu: Boa tarde a todos, Eu tenho uma trigger simples para preencher alguns campos da minha tabela a cada alteração de registro: *CREATE TRIGGER tabela_teste_trigger_ui * * BEFORE INSERT OR UPDATE * * ON public.tabela_teste FOR EACH ROW * * EXECUTE PROCEDURE public.atualiza_campos_ultimos();* * Ela aciona uma a função abaixo:* *CREATE OR REPLACE FUNCTION public.atualiza_campos_ultimos( * *)* *RETURNS trigger AS* *$body$* *BEGIN * * * * if (TG_OP = 'INSERT') then* *operacao := 'I';* * else* *operacao := 'A'; * * end if;* * * * new.DATA_ALTERACAO:= current_timestamp;* * new.TIPO_OPERACAO := operacao; * * * * if (TG_OP = 'INSERT') then * *return old;* * else* *return new;* * end if;* * * *END; * *$body$* *LANGUAGE 'plpgsql'* *VOLATILE* *RETURNS NULL ON NULL INPUT* *SECURITY INVOKER* *COST 100;* *Problemática:* Ao executar pelo banco de dados, através de scripts funciona normalmente, no entanto, quando é executada via aplicação usando Delphi 2007 + Zeos 7.0.4 eu recebo o erro: *'0 record(s) updated. Only one record should have been updated.'* * * Em minhas pesquisas e testes realizado pude perceber que o problema esta relacionado com o update dos campos da tabela, fato é que, ao desativar a trigger a aplicação consegue gravar os dados normalmente na tabela. Alguém já passou por isso ou percebeu alguma coisa na função que possa estar ocasionando o problema? Obrigado. -- Rafael M. Naves Analista/Programador (31)9861-4047 (*novo!*) (31)8636-8910 http://www.twitter.com/navesrafael http://www.rafaelnaves.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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela com Bytea
Achei essa materia aqui também: http://www.microolap.com/products/connectivity/postgresdac/help/TipsAndTricks/ByteaVsOid.htm Em 30 de agosto de 2013 16:36, Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org escreveu: 2013/8/30 Glauco Torres torres.gla...@gmail.com: Tenho uma tabela com um único campo bytea com 572645 registros, para buscar um único registro é tarefa árdua, hoje só essa tabela passa fácil do 100 GB o que dificulta a manipulação não só dela como do restante do banco. Já estamos buscando formas de resolver esse problema em novos projetos. Busquem a palestra do Diogo Biazus no primeiro PgBR. Algo deve ter mudado, mas creio que as informações básicas ainda valem. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Select vazio, mas com linhas, é possível?
Pessoal, de vez em quando surge umas necessidades doidas e aí vem as ideias doidas também. Preciso em um relatório mostrar um determinado número de linhas mesmo (branco) quando a query não me traz nenhum registro. Bem nó codigo consigo fazer de boa, mas como a query é usada em mais de um local, gostaria de fazer nela. Algo do tipo SELECT CONTA(5), CAMPO1, CAMPO2, CAMPO3 FROM TABELA WHERE (CONDICAO) OR(1 0) -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Select vazio, mas com linhas, é possível?
Caraca mano, Matheus, rsrsrs Acertou na mosca... Matou 2 coelhos com uma caixa d'água só. Certinho aqui... muito obrigado... Em 28 de agosto de 2013 16:02, Matheus de Oliveira matioli.math...@gmail.com escreveu: 2013/8/28 Marcelo da Silva marc...@ig.com.br Pessoal, de vez em quando surge umas necessidades doidas e aí vem as ideias doidas também. Preciso em um relatório mostrar um determinado número de linhas mesmo (branco) quando a query não me traz nenhum registro. Bem nó codigo consigo fazer de boa, mas como a query é usada em mais de um local, gostaria de fazer nela. Se entendi bem, você queria, por exemplo, que a query retornasse ao menos N linhas, sendo que se retornar menos, sejam adicionadas linhas em branco (digamos NULL) para completar N linhas. É isso? Se não for explique melhor... Se for, isso funciona: WITH t AS ( SELECT id, value FROM foo ) SELECT t.* FROM t UNION ALL SELECT null, null FROM generate_series(1, (SELECT N - count(*) FROM t)); (trocar N pelo número mínimo de linhas). Claro que pode ter implicações negativas em performance caso a consulta retorne muitas linhas (devido ao count). Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Pra que serve OIDS ?
Sempre que vou criar tabelas deixo o OIDS = FALSE Isso porque vem por padrão False no pgAdmin Já vi umas bases que usam esses OIDS, pra que servem ? -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Pra que serve OIDS ?
Imaginei ser isso, então concordo que serve pra quase nada mesmo... a menos que o fulano queira saber em que ordem os registros foram inseridos originalmente... pode ser? Em 26 de agosto de 2013 17:07, Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org escreveu: 2013/8/26 Marcelo da Silva marc...@ig.com.br: Já vi umas bases que usam esses OIDS, pra que servem ? Basicamente, para nada. Mas, se o gajo não sabe para que servem chaves naturais, os OIDs servem como chaves artificiais... ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Pra que serve OIDS ?
bem, entao deixamos que os oids não servem pra nós mesmo :) Sorte que quando criei minhas bases não usei esse cara :) Em 26 de agosto de 2013 17:44, Marcone marconepe...@gmail.com escreveu: Em 26 de agosto de 2013 17:07, Guimarães Faria Corcete DUTRA, Leandro l...@dutras.org escreveu: 2013/8/26 Marcelo da Silva marc...@ig.com.br: Já vi umas bases que usam esses OIDS, pra que servem ? Basicamente, para nada. Conforme [1], os OID são bem utilizados internamente pelo postgres como PKs de tabelas do sistema. Em 26 de agosto de 2013 17:32, Marcelo da Silva marc...@ig.com.br escreveu: Imaginei ser isso, então concordo que serve pra quase nada mesmo... a menos que o fulano queira saber em que ordem os registros foram inseridos originalmente... pode ser? A documentação [1] não dá orientação alguma sobre isso. O OID é um inteiro sem sinal de 4 bytes que dá um número bem grande de registros, mas que pode vir a ser estourado, aí o OID será reiniciado e sua lógica de ordenação perdida. 1 - http://www.postgresql.org/docs/9.2/static/datatype-oid.html -- Marcone Peres - DBA http://www.linkedin.com/in/marconeperes oraculogeo.blogspot.com @marconeperes (61) 8146-0028 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Estouro de dados no view
Caros usuários do PostgresSQL Tenho um view no banco de dados que varia o número de linhas de acordo com a tabela que esta vinculado. Quando essa tabela ultrapassa 110.000 linhas aparece essa mensagem de erro: ERROR: Could not execute table metadada query: ERRO: valor do intervalo: estouro (overflow). Alguém pode dar uma dica como resolver isso? Marcelo Miranda ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Sintaxe INSERT
Mesmo depois de olhar a sintaxe do INSERT no site do postgres resolvi perguntas aos gurus aqui da lista :) Teria como fazer um insert tratando uma condição ? Exemplo: INSERT INTO TABELA (CAMPO1, CAMPO2) VALUES(VALOR1, VALOR2) WHERE (CAMPO1 NOT IN(X)) Ou seja, gostaria de verificar se existe um determinado registro antes de inserir Mas gostaria de saber se dá pra fazer isso no insert simples e não criar uma função pra isso. Cada ideia né :) Mas vai que cola... rsrsrs -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Sintaxe INSERT
Opa... belesa... Simplifica muito... Valeu Edson Em 19 de agosto de 2013 17:41, Edson Neto edson.edsn...@gmail.comescreveu: Em 19 de agosto de 2013 17:22, Marcelo da Silva marc...@ig.com.brescreveu: Mesmo depois de olhar a sintaxe do INSERT no site do postgres resolvi perguntas aos gurus aqui da lista :) Teria como fazer um insert tratando uma condição ? Exemplo: INSERT INTO TABELA (CAMPO1, CAMPO2) VALUES(VALOR1, VALOR2) WHERE (CAMPO1 NOT IN(X)) Ou seja, gostaria de verificar se existe um determinado registro antes de inserir Mas gostaria de saber se dá pra fazer isso no insert simples e não criar uma função pra isso. O Postgres permite que você realize insert baseado em uma consulta. Com isso você poderia fazer o seguinte INSERT INTO TABELA (CAMPO1, CAMPO2) select VALOR1,VALOR2 where not exists(select 1 from TABELA where CAMPO1 =X); Nesse caso apenas ocorreria o insert caso não existisse campo1 com valor x na tabela. []s Edson ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Não consigo acessar o postgresql
Qual sistema operacional ? Se for Linux talvez tenha que executar o fsck para concertar Em 14 de agosto de 2013 17:20, Eric Patrick ericpatric...@gmail.comescreveu: Caros, Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem: psql: FATAL: could not open file global/11672: Read-only file system olhei o respectivo arquivo e a permissão está ok, conforme abaixo: -rw--- 1 postgres postgres 16384 May 31 11:37 11672 Alguém poderia me dar uma ideia do que pode estar acontecendo? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Não consigo acessar o postgresql
Eita... consertar rsrsrs Em 14 de agosto de 2013 17:26, Marcelo da Silva marc...@ig.com.brescreveu: Qual sistema operacional ? Se for Linux talvez tenha que executar o fsck para concertar Em 14 de agosto de 2013 17:20, Eric Patrick ericpatric...@gmail.comescreveu: Caros, Hoje fui tentar acessar o postgresql e obtive a seguinte mensagem: psql: FATAL: could not open file global/11672: Read-only file system olhei o respectivo arquivo e a permissão está ok, conforme abaixo: -rw--- 1 postgres postgres 16384 May 31 11:37 11672 Alguém poderia me dar uma ideia do que pode estar acontecendo? ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] CASE + CAST + CONCAT
Estou tentando fazer algo do tipo: ... case when ((a.data_qui is null)and(a.data_ven current_date)) then cast(current_date - a.data_ven) as text)||' dias' when (a.data_qui is not null) then 'Quitado' else cast(0 as char(1)) end as status, ... Explicando: Preciso mostrar a qtd de dias quando vencido, quando quitado mostrar quitado, ou seja hora será integer hora será text, mas pra não dar conflito estava tentando com cast, mudar tudo para text Ele reclama da conversão dentro do Case -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] CASE + CAST + CONCAT
Assim deu certo: case when ((a.data_qui is null)and(a.data_ven current_date)) then cast(current_date - a.data_ven as text) when (a.data_qui is not null) then 'Quitado' else 'Vence hoje' end as vencido, Obrigado a todos que se dispuseram... Em 12 de agosto de 2013 08:41, Rafael Naves emaildorafaelna...@gmail.comescreveu: Bom dia, Não esta faltando apenas o ) na linha? cast((current_date - a.data_ven) as text)||' dias' Em 12 de agosto de 2013 08:37, Matheus de Oliveira matioli.math...@gmail.com escreveu: On Mon, Aug 12, 2013 at 8:34 AM, Marcelo da Silva marc...@ig.com.br wrote: Estou tentando fazer algo do tipo: ... case when ((a.data_qui is null)and(a.data_ven current_date)) then cast(current_date - a.data_ven) as text)||' dias' when (a.data_qui is not null) then 'Quitado' else cast(0 as char(1)) end as status, ... Explicando: Preciso mostrar a qtd de dias quando vencido, quando quitado mostrar quitado, ou seja hora será integer hora será text, mas pra não dar conflito estava tentando com cast, mudar tudo para text Ele reclama da conversão dentro do Case Não testei, mas me parece que ele deve estar reclamando por causa desta parte: `cast(0 as char(1))`. Os demais estão text, então use text aí também (ao invés de char) ou então, já que é constante, use '0'. Atenciosamente, -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Rafael M. Naves Analista/Programador (31)9861-4047 (novo!) (31)8636-8910 http://www.twitter.com/navesrafael http://www.rafaelnaves.com ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Para imagens - Bytea ou Oid ?
Hoje utilizo Bytea para gravar imagens no banco. Estava passeando pela web e vi que pode-se usar Oid. Fazendo uns testes com Selects e Componentes Delphi, vi que Com Oid posso exportar a imagem diretamente do banco Mas um componente DBImage do delphi não exibe a imagem diretamente do banco quando o campo é Oid. Já com Bytea posso visualizar a imagem diretamente do banco, mas não posso esporta-la diretamente do banco. O Comentário acima é só para terem uma ideia dos testes realizados A pergunta é: Qual o mais indicado para guardar Imagem diretamente no banco ? Quais os prós e contras fora os já citados acima? -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
Valeu Fabio..., como eu citei eu não manjo, mas aqui tenho que fazer papel de DBA e tudo mais, sabcomé, então nem sobra tempo pra estudar essas funções detalhadamente, as dicas aqui da lista são excelentes... Vou tratar de mudar a função :) Mais uma vez, muito obrigado... Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez fabio.tel...@gmail.com escreveu: Marcelo, lamento lhe informar mas você está fazendo isso do jeito errado. Não é que sua função não funcione, mas por princípio não devemos substituir um SQL puro por um PL. Quando você faz isso, o otimizador de desempenho do postgres vai para o vinagre. Além disso, você declarou sua função como VOLATILE. Se declarar como IMMUTABLE, veria ganhos imediatos, vide: http://www.postgresql.org/docs/current/static/sql-createfunction.html Eu escrevi um pouco sobre como trabalhar com datas aqui: http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/ 2013/8/5 Marcelo da Silva marc...@ig.com.br: Desculpa estava esquecendo de uma linha... Agora está OK -- Function: fproxdiautil(date) -- DROP FUNCTION fproxdiautil(date); CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer) RETURNS date AS $BODY$ declare Dia integer; SomaDias integer; NovaData date; Begin SomaDias = 0; NovaData = pData; while (SomaDias pDias) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); while (Dia = 0 or Dia = 6) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); end loop; SomaDias = SomaDias + 1; end loop; return fproxdiautil(NovaData); end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fdiasuteis(date, integer) OWNER TO postgres; Marcelo Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar a verificação em cada select do que ter uma função pra isso? Não entendi. Em 6 de agosto de 2013 08:54, Marcelo da Silva marc...@ig.com.br escreveu: Valeu Fabio..., como eu citei eu não manjo, mas aqui tenho que fazer papel de DBA e tudo mais, sabcomé, então nem sobra tempo pra estudar essas funções detalhadamente, as dicas aqui da lista são excelentes... Vou tratar de mudar a função :) Mais uma vez, muito obrigado... Em 6 de agosto de 2013 08:50, Fábio Telles Rodriguez fabio.tel...@gmail.com escreveu: Marcelo, lamento lhe informar mas você está fazendo isso do jeito errado. Não é que sua função não funcione, mas por princípio não devemos substituir um SQL puro por um PL. Quando você faz isso, o otimizador de desempenho do postgres vai para o vinagre. Além disso, você declarou sua função como VOLATILE. Se declarar como IMMUTABLE, veria ganhos imediatos, vide: http://www.postgresql.org/docs/current/static/sql-createfunction.html Eu escrevi um pouco sobre como trabalhar com datas aqui: http://savepoint.blog.br/brincando-com-algumas-funcoes-com-data-no-postgresql/ 2013/8/5 Marcelo da Silva marc...@ig.com.br: Desculpa estava esquecendo de uma linha... Agora está OK -- Function: fproxdiautil(date) -- DROP FUNCTION fproxdiautil(date); CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer) RETURNS date AS $BODY$ declare Dia integer; SomaDias integer; NovaData date; Begin SomaDias = 0; NovaData = pData; while (SomaDias pDias) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); while (Dia = 0 or Dia = 6) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); end loop; SomaDias = SomaDias + 1; end loop; return fproxdiautil(NovaData); end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fdiasuteis(date, integer) OWNER TO postgres; Marcelo Silva ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
O mais importante deixei de lado: Quando devo usar VOLATILE IMMUTABLE STABLE ? Em 6 de agosto de 2013 10:22, Marcelo da Silva marc...@ig.com.br escreveu: Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE, VOLATILE, e STABLE ? Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem ser mudados ou não, não compreendi, pois na minha concepção a volatilidade dos dados dependeriam dos dados de entrada também, então o que torna uma função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que se guardasse o resultado em alguma variavel ou tabela, sei lá... Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez fabio.tel...@gmail.com escreveu: Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br escreveu: Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar a verificação em cada select do que ter uma função pra isso? Não entendi. A regra de ouro é: se dá para fazer com SQL puro, não faça com PL. Quando você manda um comando para um SGDB, seja Postgres, SQL Server, Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da forma mais eficiente possível. Se você manda uma consulta envolvendo varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas para executar a sua consulta. Quando você utiliza o PL, o otimizador perde a sua autonomia em favor da sua lógica de programação. Claro que se sua função é do tipo IMMUTABLE, isso não é tão importante, afinal, você não está consultando nenhuma tabela. Mas a sua função vai invariavelmente aparecer dentro de um SQL e aí as coisas vão se complicando. -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
Hum... show, ali está bem explicado... Vou analisar minhas funções... Só um comentário achei estranho, no inicio ele diz que: O lado negativo de se empregar funções no Postgres ou em qualquer SGBD é a necessidade de um tempo significativo de processamento Eu sempre vi as funções dentro do banco como uma virtude justamente pelo ganho de processamento. Será que estou errado denovo? Em 6 de agosto de 2013 10:34, Claudio Bezerra Leopoldino claudiob...@yahoo.com.br escreveu: *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE, VOLATILE, e STABLE ? Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem ser mudados ou não, não compreendi, pois na minha concepção a volatilidade dos dados dependeriam dos dados de entrada também, então o que torna uma função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que se guardasse o resultado em alguma variavel ou tabela, sei lá... Veja os exemplos deste post: http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html Cordialmente, Cláudio Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez fabio.tel...@gmail.com escreveu: Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br escreveu: Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar a verificação em cada select do que ter uma função pra isso? Não entendi. A regra de ouro é: se dá para fazer com SQL puro, não faça com PL. Quando você manda um comando para um SGDB, seja Postgres, SQL Server, Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da forma mais eficiente possível. Se você manda uma consulta envolvendo varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas para executar a sua consulta. Quando você utiliza o PL, o otimizador perde a sua autonomia em favor da sua lógica de programação. Claro que se sua função é do tipo IMMUTABLE, isso não é tão importante, afinal, você não está consultando nenhuma tabela. Mas a sua função vai invariavelmente aparecer dentro de um SQL e aí as coisas vão se complicando. -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Fwd: Funcão para contar dias uteis
Valeu Fabio... estou aprimorando no postgres e vocês estão de parabéns Em 6 de agosto de 2013 10:43, Marcelo da Silva marc...@ig.com.br escreveu: Hum... show, ali está bem explicado... Vou analisar minhas funções... Só um comentário achei estranho, no inicio ele diz que: O lado negativo de se empregar funções no Postgres ou em qualquer SGBD é a necessidade de um tempo significativo de processamento Eu sempre vi as funções dentro do banco como uma virtude justamente pelo ganho de processamento. Será que estou errado denovo? Em 6 de agosto de 2013 10:34, Claudio Bezerra Leopoldino claudiob...@yahoo.com.br escreveu: *Assunto:* Re: [pgbr-geral] Fwd: Funcão para contar dias uteis Fabio, desculpa aproveitar da sua bondade, mas como cuido de muita coisa aqui, fica meio dificil assimilar algumas coisas no postgres, sei que para isso seria bom fazer um cursinho, mesmo que rápido em DBA Postgres, mas sabcome né, então eu lhe pergunto quais as diferenças entre IMMUTABLE, VOLATILE, e STABLE ? Li no manual, mas confeço que fiquei meio confuso, pois ele se refere a dados vindos de tabelas ou não, e ao mesmo tempo cita que os dados podem ser mudados ou não, não compreendi, pois na minha concepção a volatilidade dos dados dependeriam dos dados de entrada também, então o que torna uma função volatil ou não ? Pelo meu ver toda função seria volatil, a menos que se guardasse o resultado em alguma variavel ou tabela, sei lá... Veja os exemplos deste post: http://postgresqlbr.blogspot.com.br/2012/08/categorias-de-volatilidade-de-funcoes.html Cordialmente, Cláudio Em 6 de agosto de 2013 09:36, Fábio Telles Rodriguez fabio.tel...@gmail.com escreveu: Em 6 de agosto de 2013 08:56, Marcelo da Silva marc...@ig.com.br escreveu: Outro detalhe, relendo seu Post, você está dizendo que é melhor utilizar a verificação em cada select do que ter uma função pra isso? Não entendi. A regra de ouro é: se dá para fazer com SQL puro, não faça com PL. Quando você manda um comando para um SGDB, seja Postgres, SQL Server, Oracle, DB2 ou até o Mysql... eles tentam executar o seu comando da forma mais eficiente possível. Se você manda uma consulta envolvendo varias tabelas, ele vai avaliar em que ordem ele vai pegar as tabelas para executar a sua consulta. Quando você utiliza o PL, o otimizador perde a sua autonomia em favor da sua lógica de programação. Claro que se sua função é do tipo IMMUTABLE, isso não é tão importante, afinal, você não está consultando nenhuma tabela. Mas a sua função vai invariavelmente aparecer dentro de um SQL e aí as coisas vão se complicando. -- Atenciosamente, Fábio Telles Rodriguez blog: http://savepoint.blog.br e-mail / gtalk / MSN: fabio.tel...@gmail.com Skype: fabio_telles Timbira - A empresa brasileira de Postgres http://www.timbira.com.br ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Funcão para contar dias uteis
Pessoal estou criando uma função para contar somente os dias uteis (seg a sex) Cheguei no seguinte: CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer) RETURNS date AS $BODY$ declare Dia integer; SomaDias integer; NovaData date; Begin SomaDias = 0; NovaData = pData; while (SomaDias pDias) loop Dia = extract(dow from NovaData); while (Dia in(0, 1)) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); end loop; SomaDias = SomaDias + 1; end loop; return fproxdiautil(NovaData); end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fdiasuteis(date, integer) OWNER TO postgres; No delphi tenho a mesma função, mas no postgres não está funcionando, onde estou errando? Não manjo muito de plpgsql então solicito a ajuda dos colegas -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Fwd: Funcão para contar dias uteis
Desculpa estava esquecendo de uma linha... Agora está OK -- Function: fproxdiautil(date) -- DROP FUNCTION fproxdiautil(date); CREATE OR REPLACE FUNCTION fdiasuteis(pData date, pDias integer) RETURNS date AS $BODY$ declare Dia integer; SomaDias integer; NovaData date; Begin SomaDias = 0; NovaData = pData; while (SomaDias pDias) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); while (Dia = 0 or Dia = 6) loop NovaData = NovaData + 1; Dia = extract(dow from NovaData); end loop; SomaDias = SomaDias + 1; end loop; return fproxdiautil(NovaData); end; $BODY$ LANGUAGE plpgsql VOLATILE COST 100; ALTER FUNCTION fdiasuteis(date, integer) OWNER TO postgres; 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] Ajuda com consulta
Tenho o seguinte select que me traz todas as tabelas que possui o campo cod_id: select table_name from information_schema.columns where table_schema not in(' pg_catalog ', ' information_schema ') and(column_name = 'cod_id') Isso pode te dar uma luz de como fazer seu select Marcelo Silva - Desenvolvedor Delphi / PHP Em 26 de julho de 2013 11:51, Glauco Torres torres.gla...@gmail.comescreveu: Bom dia Pessoal! Seguinte preciso encontrar em todas as minhas tabelas a coluna de nome 'numeronota' e trazer seus respectivos conteúdos. Pesquisei algumas coisas mais não encontrei nada para PostgreSQL, o nome disso se não estou enganado é reflexão de colunas. Grato Att Glauco Torres ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Ajuda com consulta
Veja se consegue juntar ao select recursivo depois de listas as tabelas: with recursive tabelarec (campos) as ( select campos from tabela where (condicao) UNION ALL select campos from tabela a INNER JOIN tabela b ON(b.campo = a.campo) select campos from tabelarec where (condicao) Em 26 de julho de 2013 14:26, Glauco Torres torres.gla...@gmail.comescreveu: Tenho o seguinte select que me traz todas as tabelas que possui o campo cod_id: select table_name from information_schema.columns where table_schema not in(' pg_catalog ', ' information_schema ') and(column_name = 'cod_id') Isso pode te dar uma luz de como fazer seu select Pois é essa consulta eu já tinha conseguido fazer ela, o problema é o depois, mais mesmo assim obrigado. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Trim X Chr(13) X Espaco
Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as vezes vem caracteres invisiveis, mas que nos dão uma dor de cabeça. Veja os exemplos dos select abaixo: SELECT 'TESTE' = TESTE SELECT TRIM('TESTE ') = TESTE SELECT TRIM('TESTE ') = TESTE Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa o Trim menos eficiente pois ele tira o chr(13) mas deixa um espaço. Me parece que o Trim entende que logo depois do tem um novo caracter, então ele passa a considerar o como um intervalo de palavras... isso acaba causando problemas numa verificação no Delphi, que que o Trim do Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais caracteres visiveis. Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está correto? Imaginem uma string Teste Ele acaba deixando um caracter em branco no final, no meu ver parece algo errado com o Trim. -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Trim X Chr(13) X Espaco
Hum... vamos ao plano G então Em 22 de julho de 2013 14:12, Fabiano Abreu fabianoabreual...@gmail.comescreveu: Marcelo, Tenho este mesmo problema no MySQL. O trim realmente não tira o carácter, até porque o carácter enter não é um espaço, creio que seja o padrão ANSI mesmo. Abraços. Fabiano Abreu paposql.blogspot.com.br Em 22/07/2013 12:49, Marcelo da Silva marc...@ig.com.br escreveu: Pessoal, tenho o seguinte, sabe como é o usuário no copia e cola, as vezes vem caracteres invisiveis, mas que nos dão uma dor de cabeça. Veja os exemplos dos select abaixo: SELECT 'TESTE' = TESTE SELECT TRIM('TESTE ') = TESTE SELECT TRIM('TESTE ') = TESTE Vejam que o ultimo select tem um Chr(13) no final da string, o que deixa o Trim menos eficiente pois ele tira o chr(13) mas deixa um espaço. Me parece que o Trim entende que logo depois do tem um novo caracter, então ele passa a considerar o como um intervalo de palavras... isso acaba causando problemas numa verificação no Delphi, que que o Trim do Delphi limpa mesmo caracteres como chr(13) quando percebe que não há mais caracteres visiveis. Pergunta: Isso é um bug do trim Postgres ou esse funcionamento está correto? Imaginem uma string Teste Ele acaba deixando um caracter em branco no final, no meu ver parece algo errado com o Trim. -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela já nasceu lenta, pode?
Eu já li com respeito ao campos com dados repetitivos, estes aconselha-se a vir primeiro para otimizar a consulta. Por exemplo: Tabela Clientes cod_cli integer nome varchar(50) cidade varchar(50) estado char(1) select * from clientes where (estado not in('SP')) and(cidade = 'VARGEM') Dessa forma como estado possui muitos valores duplicados ele já elimina muitos registros... Mas isso lí em matéria para o MySQL, não sei se é aplicavel no Postgres (imagino que sim) Também vejo que tudo vai depender da disposição dos indices também, já que normalmente não se cria indices para capos tipo Flag (S/N, UF, V/F e etc) Bem, qualquer dica é bem vinda :) Marcelo Silva Em 17 de julho de 2013 11:15, Fabiano Machado Dias fabi...@wolaksistemas.com.br escreveu: Em 16-07-2013 09:03, Cicero Neto escreveu: --corte-- Caso use a clausura WHERE pririze-a INVERTENTO a ordem dos campos EXE:- WHERE CAMPO4,3,2,1. --corte-- Bom dia, Você pode indicar alguma documentação onde informa isto? Já li toda a documentação do PostgreSQL, principalmente a parte de otimização e reescrita de SQL e não lembro de algo informando que a ordem de campos no WHERE tem impacto no desempenho, inclusive já fiz testes e nunca observei alteração. Como já faz um tempo que li gostaria de saber de onde você tirou esta informação, posso estar enganado, mas acredito que não exista nenhuma relação na ordem do WHERE em relação a desempenho na consulta. Abraço, Fabiano Machado Dias - Português - detectado - Inglês - Português - Inglês - Português #13fecfcefe68618b_ ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela já nasceu lenta, pode?
Opa... Euler, um detalhe me chamou a atenção: (é claro que ele vai respeitar a ordem indicada com parênteses). Como assim, poderia dar um exemplo num simples SQL ? Gostaria de saber sobre isso, pois eu sempre separo as condições entre parenteses SELECT * FROM TABELA WHERE (CONDICAO1)AND(CONDICAO2) ETC Faço isso para melhor leitura mesmo... vai que estou errando... Em 17 de julho de 2013 15:09, Euler Taveira eu...@timbira.com.br escreveu: On 17-07-2013 12:58, engine.gro...@gmail.com wrote: Vou aproveitar uma explicação que tive de um DBA Oracle...(eu sei, a lista é de PG)... Oracle *não* é Postgres. ;) Procure no where sempre colocar os campos que pertencem a chave de indice da tabela, na mesma ordem se a chave for composta, pois o banco utiliza a estatistica para realizar a pesquisa e se a chave for composta e a formatacao da filtragem nao for igual a chave, entao o fitro será feito sem utilizar a estatistica da tabela Isso não é verdade! O otimizador é esperto o suficiente para utilizar primeiro os campos com *maior* seletividade independente da ordem em que eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada com parênteses). Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade no banco de dados do Larry. -- 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Tabela já nasceu lenta, pode?
A sim, neste caso seria a regra matemática por assim dizer, ufa, pensei que fosse a respeito da nomenclatura. É o velho esquema (1 + 2 * 3) é diferente de ((1 + 2) * 3) Já ia pensando que teria que rever todas as minhas Querys rsrsrs Em 17 de julho de 2013 15:27, Alessandro Gonçalves ale...@gmail.comescreveu: Se o c3 tiver uma seletividade maior que c1 o banco vai respeitar os parenteses e vai primeiramente considerar o c1 SELECT * FROM TABELA WHERE ((c1 == 1) AND c3 == 1) Em 17 de julho de 2013 15:16, Marcelo da Silva marc...@ig.com.brescreveu: Opa... Euler, um detalhe me chamou a atenção: (é claro que ele vai respeitar a ordem indicada com parênteses). Como assim, poderia dar um exemplo num simples SQL ? Gostaria de saber sobre isso, pois eu sempre separo as condições entre parenteses SELECT * FROM TABELA WHERE (CONDICAO1)AND(CONDICAO2) ETC Faço isso para melhor leitura mesmo... vai que estou errando... Em 17 de julho de 2013 15:09, Euler Taveira eu...@timbira.com.brescreveu: On 17-07-2013 12:58, engine.gro...@gmail.com wrote: Vou aproveitar uma explicação que tive de um DBA Oracle...(eu sei, a lista é de PG)... Oracle *não* é Postgres. ;) Procure no where sempre colocar os campos que pertencem a chave de indice da tabela, na mesma ordem se a chave for composta, pois o banco utiliza a estatistica para realizar a pesquisa e se a chave for composta e a formatacao da filtragem nao for igual a chave, entao o fitro será feito sem utilizar a estatistica da tabela Isso não é verdade! O otimizador é esperto o suficiente para utilizar primeiro os campos com *maior* seletividade independente da ordem em que eles aparecem no WHERE (é claro que ele vai respeitar a ordem indicada com parênteses). Se o outro banco de dados faz isso, ele está anos-luz atrás do Postgres -- que já faz isso a bastante tempo. Porém, duvido que isso seja verdade no banco de dados do Larry. -- 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- * *Alessandro Gonçalves Programador de Sistemas para Web ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Expressão Regular para CNPJ e CPF via SQL
Interessante Osvaldo... Mas por que será que o Postgres colocar um espaço no inicio da String ? Veja: SELECT to_char(01234567890, '000.000.000-00') Result = 012.345.678-90 Marcelo Silva -- Em 15 de julho de 2013 15:38, Osvaldo Kussama osvaldo.kuss...@gmail.comescreveu: Em 15/07/13, Giovani Rodriguesgiovani...@gmail.com escreveu: Boa tarde pessoal. Existe a possibilidade no postgres de formatar um campo cnpj ou cpf direto na consulta com expressão regulares? Eu armazeno somente números na tabela para esses campos. Uma maneira é você apenas formatar para exibição. Por exemplo: bdteste=# SELECT to_char(01234567890, '000.000.000-00'); to_char - 012.345.678-90 SELECT to_char(012345678000123, '00.000.000/-00'); to_char - 12.345.678/0001-23 (1 row) Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Expressão Regular para CNPJ e CPF via SQL
Hum... interessante... é bom saber desses detalhes pra não ficar dando aqueles jeitinhos pra mostrar os resultados, muito bom. 2013/7/15 Osvaldo Kussama osvaldo.kuss...@gmail.com 2013/7/15, Osvaldo Kussama osvaldo.kuss...@gmail.com: Em 15/07/13, Marcelo da Silvamarc...@ig.com.br escreveu: Interessante Osvaldo... Mas por que será que o Postgres colocar um espaço no inicio da String ? Veja: SELECT to_char(01234567890, '000.000.000-00') Result = 012.345.678-90 Coloque FM (FM prefix - fill mode (suppress padding blanks and trailing zeroes)): bdteste=# SELECT '[' || to_char(012345678000123, '00.000.000/-00') || ']'; ?column? --- [ 12.345.678/0001-23] (1 row) bdteste=# SELECT '[' || to_char(012345678000123, 'FM00.000.000/-00') || ']'; ?column? -- [12.345.678/0001-23] (1 row) Osvaldo http://www.postgresql.org/docs/current/interactive/functions-formatting.html Complementando: O espaço é para um eventual sinal. No caso de positivo ele deixa em branco: bdteste=# SELECT '[' || to_char(-012345678000123, '00.000.000/-00') || ']'; ?column? --- [-12.345.678/0001-23] Osvaldo ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Tabela já nasceu lenta, pode?
Algumas tabelas do meu banco acabam sendo mais lentas para abrir do outras, o que pode ser? Sei que muito coisa pode influenciar em ralação a hardware e configuração, mas uma tabela ser melhor que outra ainda não tinha visto. Por exemplo, tenho a tabela de clientes com media de 5mil registros num select * from tabela, sem nenhum filtro ele demora 1617ms para abrir, já outra tabela com 103 registros demora 3927ms Como pode isso ? Meu servidor deve estar com problema de balanceamento, rs ? Observando ambas as tabelas não existe nada de extraordinário entre elas, ambas foram criadas do mesmo modo e seus indices são somente em campos mais utilizados em selects, porem meus testes foram em select simples, sem filtro. Não estou entendendo porque a lentidão em apenas algumas tabelas. (com poucos registros) -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Duvida básica LEFT JOIN x NOT IN
Qual seria o mais eficiente ? SELECT A.CAMPOS FROM TABELA_A A LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO) WHERE (B.CAMPO IS NULL) ou SELECT A.CAMPOS FROM TABEL_A A WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B)) -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
Tempo os seguintes resultados: OPCAO A explain select a.* from mv_servicos_balcao a left join mv_servicos_print b on(cod_key_balcao = a.cod_key) where (b.cod_key is null) and(a.obs not in('C')); Hash Right Join (cost=9510.11..17269.55 rows=1 width=136) Hash Cond: (b.cod_key_balcao = a.cod_key) Filter: (b.cod_key IS NULL) - Seq Scan on mv_servicos_print b (cost=0.00..3746.55 rows=213355 width=8) - Hash (cost=7913.20..7913.20 rows=127753 width=136) - Seq Scan on mv_servicos_balcao a (cost=0.00..7913.20 rows=127753 width=136) Filter: (obs 'C'::bpchar) OPCAO B explain select a.* from mv_servicos_balcao a where (a.obs not in('C')) and(a.cod_key not in(select cod_key_balcao from mv_servicos_print)) Seq Scan on mv_servicos_balcao a (cost=4279.94..12516.98 rows=63876 width=136) Filter: ((obs 'C'::bpchar) AND (NOT (hashed SubPlan 1))) SubPlan 1 - Seq Scan on mv_servicos_print (cost=0.00..3746.55 rows=213355 width=4) Vou ser sincero... não sei fazer a leitura do explain, mas pelo que vi a segunda opção se mostrou mais eficiente, haja visto que sem o explain temos os seguintes valores em ms(milisegundos) OPCAO A = 571 rows e 496ms OPCAO B = 571 rows e 300ms Mito detonado ? rsrsrs Em 5 de julho de 2013 14:31, Claudio Bezerra Leopoldino claudiob...@yahoo.com.br escreveu: Não depende apenas da consulta. Depende dos dados armazenados e estatísticas no seu servidor. Peço que use explain e noso envie o reultado: EXPLAIN SELECT A.CAMPOS FROM TABELA_A A LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO) WHERE (B.CAMPO IS NULL) e EXPLAIN SELECT A.CAMPOS FROM TABEL_A A WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B)) Cordialmente, Cláudio Leopoldino postgresqlbr.blogspot.com/ = -- *De:* Marcelo da Silva marc...@ig.com.br *Para:* Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br *Enviadas:* Sexta-feira, 5 de Julho de 2013 14:25 *Assunto:* [pgbr-geral] Duvida básica LEFT JOIN x NOT IN Qual seria o mais eficiente ? SELECT A.CAMPOS FROM TABELA_A A LEFT JOIN TABELA_B B ON(B.CODIGO = A.CODIGO) WHERE (B.CAMPO IS NULL) ou SELECT A.CAMPOS FROM TABEL_A A WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B)) -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ 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 -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Duvida básica LEFT JOIN x NOT IN
O NOT IN ainda está sendo o mais eficiente Em 5 de julho de 2013 16:07, Bruno Silva bemanuel...@gmail.com escreveu: 2013/7/5 Claudio Bezerra Leopoldino claudiob...@yahoo.com.br EXPLAIN SELECT A.CAMPOS FROM TABEL_A A WHERE (A.CODIGO NOT IN(SELECT CODIGO FROM TABELA_B)) Trocaria o NOT IN port NOT EXISTS Bruno E. A. Silva. Analista de Sistemas. Bacharel em Sistemas de Informação Pós-graduando em Gerência de Projetos Certified Scrum Master LPIC-1 SCJP, SE 6 Novell CLA / DCTS ECR DBA Postgres --- “A caixa dizia: Requer MS Windows ou superior. Então instalei Linux.” - Sábio Desconhecido Alguns prestam serviço/consultoria de Qualidade, os outros vendem licença! ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Validar email
Pessoal, tenho a seguinte função: -- Function: fvalidaemail(text) -- DROP FUNCTION fvalidaemail(text); CREATE OR REPLACE FUNCTION fvalidaemail(text) RETURNS boolean AS $BODY$select $1 ~ '^[^@\s]+@[^@\s]+(\.[^@\s]+)+$' as result $BODY$ LANGUAGE sql VOLATILE COST 100; ALTER FUNCTION fvalidaemail(text) OWNER TO postgres; Peguei esta função na Web, mas tem algo estranho, ela está considerando emails abaixo como Falso Emails: neurivaldocas...@terra.com.br baronesaveicu...@terra.com.br andressa-...@bol.com.br neurivaldocas...@terra.com.br etc Olhei bastante e não vi nada de errado com os emails citados -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
[pgbr-geral] Visualizar imagens do campo Bytea (curiosidade)
Uma curiosidade, Tem como por um select pode ser no PgAdmin por exemplo, visualizar uma imagem que foi gravada num campo Bytea ? Ou precisa sempre uma manobra com um componente específico? Por exemplo, hoje eu visualizo exportando de uma Query do Delphi assim: MinhaQueryCampoImagem.SaveToFile('nomedoarquivo.jpg'); -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Gostaria de lembrar que não estamos falando de Oracle, que usa UNDO e não precisa tocar nos outros índices. Estamos falando de MVCC e de suas tuplas. https://devcenter.heroku.com/articles/postgresql-concurrency Ler: Disadvantages of MVCChttps://devcenter.heroku.com/articles/postgresql-concurrency#disadvantages-of-mvcc ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Concordo com todas as afirmações do Flavio. Só quis lembrar que no Oracle, a linha vai para UNDO e somente quando a linha precisa mudar de ROWID os índices são atualizados (no caso de coluna não indexada). No update do PostgreSQL SEMPRE os índices serão atualizados de qualquer forma. Quando disse tupla morta era momentâneo, no momento do update apenas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Obrigado pela correção! Realmente palavra 'sempre' não deveria estar ali :). O Flavio põe muito bem a implementação do HOT e é importante ter isso em mente pois é uma otimização de grande impacto no MVCC. Mas voltando ao caso do nosso colega, acho que no caso dele os índices estão sendo atualizados pois eu acho que as linhas não estão cabendo na mesma página. Mas não achei documentação especificando isso detalhadamente. Se alguém tiver peço que envie por favor. :( Até por curiosidade fui checar isso e parece que no passado tinha que usar uma sintaxe especial 8-O. http://pgsql.tapoueh.org/site/html/misc/hot.html http://www.postgresql.org/message-id/2e78013d0611141101m6110d275o93304e7ca31be...@mail.gmail.com -- Marcelo Henrique Gonçalves +55 19 8828 7958 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Fique atento que com o crescimento da tabela o sort pode passar a ser feito em disco demorando e impactando o IO da máquina. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Restaurar base linux em windows
Eu tenho o seguinte senário: Servidor: Linux 64bits, Postgres 9.1 Maquina desenvolvimento: Windows 64bits, Postgres 9.1 Para administrar as bases utilizo PgAdmin3 no Windows, faço backup e restore tranquilamente entre as máquinas. Utilizo o Codepage UTF-8 atualmente Numa outra configuração que peguei pra dar manutenção: Base em SQL_ANSI Postgres 7.2 Para trazer para o Postgres UTF-8 versão 9.1 Fiz o seguinte: PgAdmin3 - Backup na base SQL_ANSI para LATIN1 PgAdmin3 - Restore no Backup LATIN1 para UTF-8 Tudo ocorreu belezinha Esses são alguns cases que tenho Marcelo Silva --- Desenvolvedor Delphi / PHP Postgres 9.1 Em 27 de junho de 2013 09:47, Jean Domingues ejdom...@yahoo.com.brescreveu: Pessoal, queria saber se é possível restaurar uma cópia da pasta de dados do linux em um servidor pg de mesma versão no windows (64 bits nos dois). bom dia, negativo, somente um dump, devido o filesystem diferente. vc nao consegue nem se for de linux para linux, e se a instalação é 64 e o destino 32 bits, ou vice versa. A questão não é o sistema de arquivos, mas o sistema operacional mesmo. Os arquivos de dados do PostgreSQL é que ficam diferentes de um S.O. pra outro ou de uma arquitetura para outra. Um PostgreSQL num Solaris com ZFS não pode ser copiado para um FreeBSD com ZFS, também não funcionará. OK, pessoal. Obrigado a todos pelas respostas. ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Silva Desenvolvedor Delphi / PHP My Postgres database Cel.: (11) 99693-4251 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Seu problema não parece de tuning da instância PostgreSQL e sim de arquitetura. Estude redução dos índices, melhor where clause para o update, FKs que apontam para a PK dessa, etc... 2013/6/27 Douglas Fabiano Specht douglasfabi...@gmail.com Em 26 de junho de 2013 15:06, Marcelo Henrique Gonçalves billm...@gmail.com escreveu: Depende, todos ou quase nenhum. È necessário ter uma noção: a) Banco OLTP ou DW? b) Número de updates por segundo, usará índice na busca pela linha? c) Número aproximado de transações / segundo no banco d) Tamanho da tabela, e do índice e) Tamanho da memória da máquina (justificativa para 1GB de shared_buffer). Mostrar o explain do udpate, ajuda. Você precisa saber a frequência de commit do seu banco... ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral Bom dia Pessoal, essa tabela tem uns 100 campos e umas 8 fk e 9 indices. segue as informações, explain: Update on lanccaixa (cost=0.00..197881.30 rows=7166 width=633) (actual time=1012846.965..1012846.965 rows=0 loops=1) - Seq Scan on lanccaixa (cost=0.00..197881.30 rows=7166 width=633) (actual time=25.047..58396.786 rows=1413418 loops=1) Filter: (flindpag IS NULL) Trigger for constraint fkdocfiscalser: time=66582.215 calls=1413418 Trigger for constraint fklanccaixaconcor: time=5596.281 calls=1413418 Trigger for constraint fklanccaixaplacon: time=5586.670 calls=1413418 Trigger for constraint fklanccxadocfiscal: time=5274.534 calls=1366084 Trigger for constraint fklanccxcdcentro: time=5480.920 calls=1413418 Trigger for constraint fklanccxhistlanccre: time=5467.979 calls=1413418 Trigger for constraint fklanccxhistlancdeb: time=5400.965 calls=1413418 Trigger for constraint fklcxacdadiant: time=5418.880 calls=1413418 Total runtime: 1119142.220 ms a) Banco OLTP ou DW? OLTP b) Número de updates por segundo, usará índice na busca pela linha? esse update é num troca versao de aplicativo, ou seja so será executado uma unica vez, em cada cliente. Nao utilizara indice na busca. c) Número aproximado de transações / segundo no banco d) Tamanho da tabela, e do índice tamanho da tabela, lanccaixa;1434 MB; com indices: 3010 MB e) Tamanho da memória da máquina (justificativa para 1GB de shared_buffer). 4gb, mas é windows. -- Douglas Fabiano Specht ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral -- Marcelo Henrique Gonçalves +55 19 8828 7958 ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] parametros para melhorar update
Depende, todos ou quase nenhum. È necessário ter uma noção: a) Banco OLTP ou DW? b) Número de updates por segundo, usará índice na busca pela linha? c) Número aproximado de transações / segundo no banco d) Tamanho da tabela, e do índice e) Tamanho da memória da máquina (justificativa para 1GB de shared_buffer). Mostrar o explain do udpate, ajuda. Você precisa saber a frequência de commit do seu banco... ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
Re: [pgbr-geral] Execução de backup lógico (pg_dump) consumindo muitas horas na execução
LOBS estão em formato binário e ganham quase nada em compactação. O backup pode demorar também por causa do checkpoint. Envie o tempo médio de checkpoint, begin_backup, RAM da máqiuna, shared_buffer... o que mais puder enviar de config da instância ___ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral