Re: [pgbr-geral] Compilação do Postgr eSQL 8.1 para processamento simétrico

2007-06-19 Por tôpico Welington R. Braga

Valeu pessoal,

Deixa dar um resumo do meu cenário para ficar mais claro o problema.
Conversando com o gerente do projeto acho que achei o problema ... é tudo
;-) e o sistema teria que ser todo reescrito:

Deixa eu contar parte da minha história:
Nós temos uma base de dados de espécies botânicas, e como vocês deve lembrar
do seu tempo de ginásio, que uma planta possui um reino, um filo, uma
família, um gênero, uma espécie, um tipo, .
Isso chama-se 'taxon'. E apesar de não ser TÃO complicado é chato de
trabalhar pois são informações que precisam ser processadas com algoritimos
de árvore. Pra simplificar o cenário, basicamente eu tenho duas tabelas (é
muito mais do que isso, mas como eu disse é só pra simplificar).
Dadas essas duas tabelas: Uma tem essa hierarquia, e a outra são dados da
espécie em si.
O problema começa quando eu preciso listar minhas espécies. Não basta apenas
dar um SELECT na tabela espécies, é preciso fazer uma varredura na tabela de
taxons para listar toda a 'hierarquia genealógica' a qual a aquela espécie
pertence. O resultado... o processamento é lngo!!!
E não para por ai. Se um taxon desse é modificado, por algum motivo a
situação é mais complicada, pois eu preciso inserir/editar vários itens na
tabela de taxons. Isso é uma loucura e gera um caos, produzido por inúmeras
triggers e store-procedures.
E assim começa a penitencia, mas tem mais, eu recebo diariamente um lote de
dados em um tabelão que precisa ser desmembrado, filtrado e ordenado para
que possa se enquadrar neste perfíl e depois ser efetivamente importado.
Tudo isso tem 'chupado' recursos do meu sistema.

Em 19/06/07, Fabio Telles [EMAIL PROTECTED] escreveu:


Em 18/06/07, Welington R. Braga[EMAIL PROTECTED] escreveu:
 Valeu Euler,

 Já monitorei, mas nada indica qual processador esta em uso e o problema
 continua:

 Eu tenho uma consulta que roda periodicamente importando dados de uma
tabela
 para outra fazendo apenas algumas conversões de dados e numa quantidade
na
 ordem de milhares de registros. Após executar essa consulta o acesso a
base
 principal fica muito lento.

 O problema pelo que percebi é que quando a consulta roda, o banco joga
todos
 os registros para memória e lá ficam até ocorrer um commit.

Sim, isso é normal. Sempre que vamos rodar rotinas em lote, temos que
tomar alguns cuidados para não arriar o banco:

- Desativar índices e chaves
- Tentar usar COPY ao invés de INSERT
- Tentar usar TRUNCATE ao invés de DELETE
- Tentar usar tableas temporárias ao invés de um commit no final do
processo.
- Tentar paralelizar as operações longas utilizando mais de um processo
separado
- Tentar particionar tabelas grandes
- Distribuir melhor os dados em grupos físicos e lógicos de discos
distintos.

Particularmente, parece que o seu commit vai consumir muito recurso no
final. Cada caso é um caso, mas movimentar milhões de linhas e dar um
commit só no final acaba com os recursos de qualquer SGDB, até do DB2.
Este tipo de situação deve ser evitado a todo custo. Existem várias
técnicas para evitar isso. Dá bem mais trabalho, mas o desempenho é
fantástico.

Bom, de qualquer forma, parece que seu PostgreSQL está ótimo, mas seu
processo precisa ser otimizado.

[]s
Fábio Telles


--
site: http://www.midstorm.org/~telles/
e-mail: [EMAIL PROTECTED]
jabber: [EMAIL PROTECTED]
sip:[EMAIL PROTECTED]

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral





--
Welington Rodrigues Braga
   --
   Web: http://gtk-br.welrbraga.t5.com.br
   MSN: welrbraga[*]msn·com
   Gtalk: welrbraga[*]gmail·com
   Yahoo / Skype:  welrbraga
   ICQ: 52789331

Em tudo somos atribulados, porém não angustiados; perplexos, porém não
desanimados; perseguidos, porém não desamparados; abatidos, porém não
destruídos; - 2Co 4:8,9
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] otimizacao de queries

2007-06-19 Por tôpico Luiz Rafael Culik Guimaraes

Euler



Luiz Rafael Culik Guimaraes wrote:


Em segundo lugar, é problema de performance? EXPLAIN. Não mande a
consulta ou estrutura de tabelas a não ser que alguém peça. Para análise
de performance, é essencial a versão, pois várias otimizações são feitas
durante as versões.


postgres 64bits  versao 8.1.6 em redhat enterprise 4



E o EXPLAIN?


abaixo a query e seu explain

select b.inrcmv, b.inrndc, b.inrpur, a.cnrfor, c.movfor, b.inrcme,
a.cnrure, a.cnrutr, a.cnrdrm, a.cnrnnf, a.cnrenf, d.concpg, a.cnrvnf,
b.inrvlr, a.cnricm, b.inripi, a.cnrpis, a.cnrcofin, b.inrqtg,
'' as romplc, a.cnrbfu, a.cnrvim, a.cnrcf2, c.movpli,
q.flagsit, a.cnrsnf, a.cnrtim, c.movdoc from
qr_dbf_sie3000_log as q join granol_sie3000_dbf as a   on q.cnrnum
= a.cnrnum join granol_sie3200_dbf as b   on a.cnrnum = b.inrnum
join sif00_con1000_dbf as d   on b.inrndc =
d.connum||trim(to_char(d.conuni,'00')) join sif50_mov1000_dbf as c on
b.inrnum = c.movnnr where a.cnrsis = 1 and   b.inrdco = 1 and
b.inrcmv in ( 1,4,5,20,29,44,45,49,67,68,70,71,73 ) order by q.cnrnum
LIMIT 1

resultado do plan
Limit  (cost=37.47..37.47 rows=1 width=326) (actual time=0.213..0.213 
rows=0 loops=1)
  -  Sort  (cost=37.47..37.47 rows=1 width=326) (actual time=0.202..0.202 
rows=0 loops=1)

Sort Key: q.cnrnum
-  Nested Loop  (cost=5.88..37.46 rows=1 width=326) (actual 
time=0.030..0.030 rows=0 loops=1)
  -  Nested Loop  (cost=5.88..32.62 rows=1 width=316) (actual 
time=0.024..0.024 rows=0 loops=1)
-  Nested Loop  (cost=4.86..21.90 rows=1 width=297) 
(actual time=0.020..0.020 rows=0 loops=1)

  Join Filter: (inner.cnrnum = outer.inrnum)
  -  Hash Join  (cost=4.86..17.07 rows=1 
width=117) (actual time=0.015..0.015 rows=0 loops=1)
Hash Cond: (((outer.connum)::text || 
btrim(to_char(outer.conuni, '00'::text))) = (inner.inrndc)::text)
-  Seq Scan on sif00_con1000_dbf d 
(cost=0.00..10.80 rows=80 width=29) (actual time=0.003..0.003 rows=0 
loops=1)
-  Hash  (cost=4.86..4.86 rows=1 
width=108) (never executed)
  -  Index Scan using 
granol_sie3200_dbf_12346 on granol_sie3200_dbf b  (cost=0.00..4.86 rows=1 
width=108) (never executed)
Index Cond: (inrdco = 
1::numeric)
Filter: ((inrcmv = 1::numeric) 
OR (inrcmv = 4::numeric) OR (inrcmv = 5::numeric) OR (inrcmv = 20::numeric) 
OR (inrcmv = 29::numeric) OR (inrcmv = 44::numeric) OR (inrcmv = 
45::numeric) OR (inrcmv = 49::numeric) OR (inrcmv = 67::numeric) OR (inrcmv 
= 68::numeric) OR (inrcmv = 70::numeric) OR (inrcmv = 71::numeric) OR 
(inrcmv = 73::numeric))
  -  Index Scan using granol_sie3000_dbf_12346 on 
granol_sie3000_dbf a  (cost=0.00..4.82 rows=1 width=180) (never executed)

Index Cond: (cnrsis = 1::numeric)
-  Bitmap Heap Scan on qr_dbf_sie3000_log q 
(cost=1.02..10.63 rows=7 width=19) (never executed)

  Recheck Cond: (q.cnrnum = outer.cnrnum)
  -  Bitmap Index Scan on qr_dbf_sie3000_log_pkey 
(cost=0.00..1.02 rows=7 width=0) (never executed)

Index Cond: (q.cnrnum = outer.cnrnum)
  -  Index Scan using sif50_mov100c_06 on 
sif50_mov1000_dbf c  (cost=0.00..4.82 rows=1 width=52) (never executed)

Index Cond: (outer.inrnum = c.movnnr)
Total runtime: 1.210 ms


query
select b.inrcmv, b.inrndc, b.inrpur, a.cnrfor, d.movfor, b.inrcme,
a.cnrure, a.cnrutr, a.cnrdrm, a.cnrnnf, a.cnrenf, '' as concpg, a.cnrvnf,
b.inrvlr, a.cnricm, b.inripi, a.cnrpis, a.cnrcofin, b.inrqtg, c.romplc,
a.cnrbfu, a.cnrvim, a.cnrcf2, d.movpli, q.flagsit, a.cnrsnf, a.cnrtim,
d.movdoc from qr_dbf_sie3000_log as q join granol_sie3000_dbf as a   on
q.cnrnum = a.cnrnum join granol_sie3200_dbf as b   on a.cnrnum = b.inrnum
join granol_sie3300_dbf as c   on q.cnrnum = c.romnum join
sif50_mov1000_dbf as d on a.cnrcon = d.movcon and  a.cnruni = d.movunc
and  a.cnrnfr = d.movnpr where  ( b.inrdco = 1 or a.cnrlrt = 70 ) and
b.inrcmv in (21,49,72) and  c.romtip = 'D'  order by q.cnrnum
LIMIT 1

resultado do plano
Limit  (cost=36.50..36.51 rows=1 width=331) (actual time=0.053..0.053 
rows=0 loops=1)
  -  Sort  (cost=36.50..36.51 rows=1 width=331) (actual time=0.046..0.046 
rows=0 loops=1)

Sort Key: q.cnrnum
-  Nested Loop  (cost=6.20..36.49 rows=1 width=331) (actual 
time=0.025..0.025 rows=0 loops=1)
  Join Filter: ((outer.cnrcon = inner.movcon) AND 
(outer.cnruni = inner.movunc))
  -  Nested Loop  (cost=6.20..31.65 rows=1 width=328) (actual 
time=0.020..0.020 rows=0 loops=1)
-  Nested 

Re: [pgbr-geral] Stored procedures

2007-06-19 Por tôpico Leonardo Cezar

On 6/18/07, Luiz Claudio Aleixo [EMAIL PROTECTED] wrote:

Bom dia a todos,
estou inciando no postgres com Stored procedures e triggers, alguém me indica
algum material e alguma ajuda na criação para criação dessa função?


http://www.postgresql.org/docs/8.1/static/plpgsql.html

-Leo
--
Leonardo Cezar
http://www.hostsystems.com.br
http://www.postgresql.org.br
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Informações sobre Postgresql

2007-06-19 Por tôpico Sebastian SWC

o manual[1] é vosso amigo.

[1] http://pgdocptbr.sourceforge.net/pg80/index.html

On 6/17/07, Darlon [EMAIL PROTECTED] wrote:


Olá.

Estou desenvolvendo um trabalho sobre postgresql e estou enfrentando
dificuldades em obter informações sobre sua implementação.

Procuro informações sobre Recuperação de Falhas, como falha de transação
e de sistema, Gerenciamento de transações e Integridade de dados.

Se alguém puder me ajudar ao menos informando alguns links sobre isso...

Desde já agradeço.

Darlon.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral





--
Atenciosamente,
Sebastian Selau Webber Colombo

Calma, um dia desses eles vão deixar de usar java e banco do brasil vai
voltar a funcionar normalmente... hehehehe
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Compilação do PostgreSQL 8.1 para processamento simétrico

2007-06-19 Por tôpico Euler Taveira de Oliveira
Welington R. Braga wrote:

 Deixa dar um resumo do meu cenário para ficar mais claro o problema.
 Conversando com o gerente do projeto acho que achei o problema ... é
 tudo ;-) e o sistema teria que ser todo reescrito:
 

corte

 Dadas essas duas tabelas: Uma tem essa hierarquia, e a outra são dados
 da espécie em si.
Enquanto o PostgreSQL não aceita consultas hierárquicas, não aconselho
que use tabelas autorelacionadas que vão ter muitas consultas
hierárquicas. :(
O ideal como você mesmo adimitiu é reestruturar o sistema para separar a
informação.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Banco de dados Orientado a objeto

2007-06-19 Por tôpico Wallace Reis

On 6/19/07, Roberto Baselio Lopes [EMAIL PROTECTED] wrote:

Bom dia, estou procurando algum material sobre banco de dados orientado a
objeto para dar inicio ao meu TCC, gostaria de saber se você possui algum
material sobre o assunto


Infelizmente não. Mas você encontra na web, dê uma procurada no google.

[]'s

--
wallace reis/wreis
Núcleo de Biologia Computacional e
Gestão de Informações Biotecnológicas/LABBI
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral