Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
Fernando, apenas para não existir erros de interpretação, pois relendo agora
a frase eu mesmo demorei a compreender o que escrevi. Faltou pontuação na
mesma... rss

Com a pontuação adequada ficaria:

Concordo com o que o Euler colocou sobre a quantidade excessiva de índices.
Uma vez que o SGBD não utiliza mais de um índice por pesquisa, são extremos
os casos onde há a necessidade de mais de 5 índices por tabela. 


[]'s

-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/3 Fernando Maia maia...@gmail.com

 Olá pessoal,
 eu achu que essa frase responde minha duvida!
 Concordo com o que o Euler colocou sobre a quantidade excessiva de
 índices, uma vez que o SGBD não utiliza mais de um índice por pesquisa são
 extremos os casos onde há a necessidade de mais de 5 índices por tabela. 

 não é mesmo!


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Fernando Maia
OLá Charly,
Me corrija se estiver errado, de acordo com o que você escreveu não importa
se eu tenho 1 ou 50 indices em uma tabela, pois quando faço uma consulta ao
banco o SGBD utiliza muito poucos indices para realiza-la.

certo?

abraços, obrigado pela ajuda.

2009/10/5 Charly Frankl carl...@gmail.com

 Fernando, apenas para não existir erros de interpretação, pois relendo
 agora a frase eu mesmo demorei a compreender o que escrevi. Faltou pontuação
 na mesma... rss

 Com a pontuação adequada ficaria:

 Concordo com o que o Euler colocou sobre a quantidade excessiva de
 índices. Uma vez que o SGBD não utiliza mais de um índice por pesquisa, são
 extremos os casos onde há a necessidade de mais de 5 índices por tabela. 


 []'s

 --
 Charly Frankl
 http://javadevilopers.blogspot.com/
 charlyfra...@gmail.com
 Linux user #391083



 2009/10/3 Fernando Maia maia...@gmail.com

 Olá pessoal,
 eu achu que essa frase responde minha duvida!
 Concordo com o que o Euler colocou sobre a quantidade excessiva de
 índices, uma vez que o SGBD não utiliza mais de um índice por pesquisa são
 extremos os casos onde há a necessidade de mais de 5 índices por tabela. 

 não é mesmo!




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




-- 
Fernando Maia
Acadêmico Sistemas de Informação-CPCX-UFMS
msn: maia_...@hotmail.com
email: maia...@gmail.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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Euler Taveira de Oliveira
Charly Frankl escreveu:
 Resumindo, a cada consulta o SGBD elege APENAS UM índice da entidade
 para ser utilizado na consulta.
 
É claro que não. O SGBD pode escolher quantos índices quiser; isso vai
depender da consulta que você está executando.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Fabrízio de Royes Mello
2009/10/5 Euler Taveira de Oliveira eu...@timbira.com

 É claro que não. O SGBD pode escolher quantos índices quiser; isso vai
 depender da consulta que você está executando.


Mas isso é válido se o enable_bitmapscan estiver habilitado, porque se
estiver desligado o planejador vai usar (ou não) um índices por tabela...
certo??? (dúvidas)

[1] http://www.postgresql.org/docs/8.4/interactive/indexes-bitmap-scans.html

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Euler Taveira de Oliveira
Fabrízio de Royes Mello escreveu:
 2009/10/5 Euler Taveira de Oliveira eu...@timbira.com
 mailto:eu...@timbira.com
 
 É claro que não. O SGBD pode escolher quantos índices quiser; isso vai
 depender da consulta que você está executando.
 
 
 Mas isso é válido se o enable_bitmapscan estiver habilitado, porque se
 estiver desligado o planejador vai usar (ou não) um índices por
 tabela... certo??? (dúvidas)
 
Como eu disse anteriormente, o planejador pode produzir um plano que utiliza
mais do que um índice por tabela. Por exemplo, em junções com a mesma tabela e
 quando a tabela aparece em mais de um nó no plano de execuçã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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Fabrízio de Royes Mello
2009/10/5 Euler Taveira de Oliveira eu...@timbira.com

 Como eu disse anteriormente, o planejador pode produzir um plano que
 utiliza
 mais do que um índice por tabela. Por exemplo, em junções com a mesma
 tabela e
  quando a tabela aparece em mais de um nó no plano de execução.


Tranquilo... isso eu sabia... mas no mesmo nó somente com o bitmapscan
para utilizar mais de um índice né?

-- 
Fabrízio de Royes Mello
 Blog sobre TI: http://fabriziomello.blogspot.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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Mozart Hasse
Charly,

 É por ai mesmo. Na verdade, você pode ter os 50 índices na tua tabela,
mas
 quando for consultá-la o SGBD vai eleger UM índice a ser utilizado para a
 consulta. Logo, ter 50 índices não é garantia de melhoria na performance
da
 pesquisa, mas alguns índices bem planejados vão com certeza ajudar.
 
 Resumindo, a cada consulta o SGBD elege APENAS UM índice da entidade para
 ser utilizado na consulta.

Contra-exemplo trivial:

--Cidades do Acre com homônimos em outro estado:
select distinct c2.nomecidade
from tbcidade c2 
inner join tbcidade c on c.nomecidade = c2.nomecidade and c.ufc2.uf
where c2.uf='AC' 

Esta consulta me gerou o seguinte plano:

HashAggregate  (cost=106.66..106.88 rows=22 width=13)
  -  Nested Loop  (cost=2.43..106.60 rows=26 width=13)
Join Filter: ((c.uf)::text  (c2.uf)::text)
-  Bitmap Heap Scan on tbcidade c2  (cost=2.43..28.09 rows=23
width=16)
  Recheck Cond: ((uf)::text = 'AC'::text)
  -  Bitmap Index Scan on i1tbcidade  (cost=0.00..2.42 rows=23
width=0)
Index Cond: ((uf)::text = 'AC'::text)
-  Index Scan using a1tbcidade on tbcidade c  (cost=0.00..3.40
rows=1 width=16)
  Index Cond: ((c.nomecidade)::text = (c2.nomecidade)::text)

E olha que nem precisei apelar para mais de uma tabela, UNIONs, EXISTS,
filtros com OR ou sub-selects!

Como pode ver, o otimizador notou, pela distribuição dos dados, que compensa
usar um índice diferente para cada citação da tabela dentro da mesma
consulta (i1tbcidade e a1tbcidade). Não sei se só eu noto isso, mas a
maioria das querys com sub-selects ou cláusulas EXISTS que observei na minha
aplicação usam índices diferentes para a mesma tabela.

Logo, no meu caso, ter um monte de índices na mesma tabela compensa sim, e
muito.

Atenciosamente,

Mozart Hasse


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
De fato, nas versões apartir da 8.2 (se nao me engano) o postgresql consegue
simular um indice bitmap em memória, mas como disposto também em [1]:

A condição pode ser dividida em n utilizações separadas de um índice sobre
uma condição where. Depois é verificado o operador. Depois de os resultados
serem recuperados são  juntados usando o operador. Para combinar os índices
compostos, o sistema percorre cada índice necessário e cria um bitmap em
memória, que fornece a localização das tuplas que verificam as condições dos
índices. Os bitmaps são então unidos (tendo em conta a interrogação, usando
ANDs ou ORs) e as tuplas reais são devolvidas. As tuplas são então visitadas
pela ordem física que apresentam, por essa ser a ordem representada pelos
bitmap, o que significa que qualquer ordenação do índice original é perdida,
e que um passo extra de ordenação irá ser necessário no caso da interrogação
incluir uma cláusula ORDER BY. Por esta razão e por ser necessário percorrer
o índice um maior número de vezes, o otimizador em geral opta por utilizar
um índice simples mesmo tendo outros índices disponíveis.


Algumas boas literaturas que podem ser vista sobre o tema são:

SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de Banco de
Dados. Editora Makron Books.
MOLINA, Hector Garcia; ULLMAN, Jeffrey D.; WIDOM, Jennifer. Database Systems
– The complete book. Prentice Hall
NAVATHE; ELMASRI. Sistema de Banco de Dados: Fundamentos e Aplicações.
Editora LTC

[1] http://www.postgresql.org/docs/8.4/static/indexes-bitmap-scans.html


Att,



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083






2009/10/5 Fabrízio de Royes Mello fabriziome...@gmail.com


 2009/10/5 Euler Taveira de Oliveira eu...@timbira.com

 Como eu disse anteriormente, o planejador pode produzir um plano que
 utiliza
 mais do que um índice por tabela. Por exemplo, em junções com a mesma
 tabela e
  quando a tabela aparece em mais de um nó no plano de execução.


 Tranquilo... isso eu sabia... mas no mesmo nó somente com o bitmapscan
 para utilizar mais de um índice né?


 --
 Fabrízio de Royes Mello
  Blog sobre TI: http://fabriziomello.blogspot.com

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


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Euler Taveira de Oliveira
Fabrízio de Royes Mello escreveu:
 Tranquilo... isso eu sabia... mas no mesmo nó somente com o bitmapscan
 para utilizar mais de um índice né?
 
Não, com os algoritmos de junção podemos ter buscas em vários índices
simultaneamente também.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-10-05 Por tôpico Charly Frankl
Mozart, boa tarde... Acho que não entendeu bem quando eu usei o termo
apenas um índice por tabela.


 Como pode ver, o otimizador notou, pela distribuição dos dados, que
 compensa
 usar um índice diferente para cada citação da tabela dentro da mesma
 consulta (i1tbcidade e a1tbcidade).


Como você mesmo colocou, o otimizador optou por usar um índice diferente
para *cada citação da tabela* dentro da mesma consulta. Logo, percebe-se
que o otimizador trata a mesma entidade como entidades diferente (c e c1).
Se você observar, ele optou apenas por um índice para cada entidade sendo:
- Index Scan using a1tbcidade on tbcidade c
- Bitmap Heap Scan on tbcidade c2  (cost=2.43..28.09 rows=23 width=16)
 -  Bitmap Index Scan on i1tbcidade
ou seja,
- a1tbcidade para tbcidade c
- i1tbcidade  para tbcidade c2

Note a diferença nos usos.




 Não sei se só eu noto isso, mas a
 maioria das querys com sub-selects ou cláusulas EXISTS que observei na
 minha
 aplicação usam índices diferentes para a mesma tabela.


Segue aqui o mesmo conceito definido anteriormente. Quando você utiliza uma
subconsulta, o otimizador trata de fato como um novo uso para a entidade.
Logo, ele pode eleger um índice diferente na consulta interna (tb1)
diferente do eleito pra consulta externa (tb1-a ).



Logo, no meu caso, ter um monte de índices na mesma tabela compensa sim, e
 muito.


Não creio ser esse o tema do debate, se no teu caso compensa ou não. Mesmo
porque, ninguém aqui alem de você pode julgar isso.


Agora, voltando ao tema de muitos índices por tabela, como exposto
anteriormente pelos colegas Euler e Fabrízio, o PostgreSQL consegue nas
novas implementações simular índices bitmap (com seus custos, mas consegue).
Inclusive no exemplo que enviou podemos observar o PostgreSQL fazendo uso do
recurso, e percebe-se notadamente o que foi exposto na documentação:
Recheck Cond: ((uf)::text = 'AC'::text).


Agora, com relação a expressão Não sei se só eu noto isso..., desculpe-me
se em algum momento meus posts pareceram ser pessoais, muito pelo contrário,
apenas tentei colaborar com o debate, mesmo porque é um tema muito
interessante. E como falei, todos temos o direito de discordar, errar e
acertar dentro dos nossos debates, é isso que torna esta lista construtiva,
os erros e acertos de cada um!



Um grande abraço,


-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-03 Por tôpico Mozart Hasse
Andre Fernandes,

 Antes de mais nada, sr. Mozart, peço que o tom nestas mensagens que tens
 enviado seja menos agressivo.

Sr. Andre, o tom dos meus comentários está compatível com o dos meus 
críticos.

 Quanto a ter mais de 10 registros, isso para um banco de dados não é
 muita coisa.

Olhando o contexto da citação, notará que o objetivo era dar ao interlocutor 
uma chance de dar uma opinião minimamente informada, e não fazer comparações 
com outras aplicações.

 Não conheço teu aplicativo para dizer se realmente há algo de
 errado ou não, assim não entrarei nesse mérito.

Ótimo, aguardo para ver se os que entraram nesse mérito vão chegar a essa 
mesma conclusão ou nos surpreender ensinando-nos alguma coisa com uma 
resposta tecnicamente justificável.

 Imagino que ...

Eu também imagino um monte de coisas. Quando tiver algo concreto me avise.

 E quanto ao sr. Euler, ele é uma das pessoas que mais conhece postgreSQL
 no Brasil, não menospreze ...

Ninguém aqui citou cargos, títulos, popularidade ou autoridade até o momento 
porque isso nunca foi nem nunca será motivo para definir quem tem razão. Por 
favor, atenha-se aos argumentos pertinentes ao assunto.

Atenciosamente,

Mozart Hasse 


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-03 Por tôpico Mozart Hasse
Tarcísio,

 1 para escrever no log.
 32 outros arquivos sendo um para cada índice.
 1 para a tabela.

Isso o Euler já explicou, leia com atenção minha mensagem sobre essa conta 
para entender o que eu questionei.

 Mozart, a única *coisa estranha* que *eu* vejo é a necessidade de
 usar 44 índices.
 Provavelmente você está criando um para cada coluna.

Parece estranho e mesmo assim não deixa de ser muito útil.
Não, não estou criando um por coluna.

 Você mesmo disse:
  ... eu quase sempre uso todos os 89 campos ...
 Então crie 1 índice contendo todas as colunas que fazem referência às 
 dimensões.

Eu expliquei na mesma mensagem o que eu tenho contra essa idéia. Recomendo 
que crie uma tabela com vários campos, chaves estrangeiras e um índice com 
todos os campos, depois tente achar uma consulta em que esse índice sirva 
para alguma coisa além de ocupar espaço. Com 89 campos e 10 registros 
acho pouco provável que consiga.

 Mesmo que você faça uma consulta que não utilize estas colunas no filtro,
 a consulta ainda poderá usar o índice parcialmente.

Por enquanto estou usando só índices que usem as colunas no filtro, por isso 
estou com apenas 44. Se eu resolver incluir índices que não usem aí o número 
vai aumentar, e não diminuir.

 Não crie também índices malucos como exemplo:
 1 índice para cd_cliente, outro para cd_produto e outro para as duas
 colunas: cd_cliente e cd_produto.
 Apenas crie 1 índice para as 2 colunas.

Não tem nada de maluco em criar todos eles ao mesmo tempo.
Isso até seria pertinente a algumas situações específicas de algumas versões 
do Oracle, porém no Postgres não se aplica. Tenho diversas tabelas e 
consultas em que o otimizador algumas vezes escolhe os índices individuais e 
em outras os índices com as colunas agrupadas.
Por acaso ter o índice usado em alguma consulta é suficiente para esse 
índice não ser chamado de maluco ou é preciso algo mais? Alguma 
justificativa a expor?

 Novamente eu recomendo para você o livro:
 http://www.amazon.com/exec/obidos/ASIN/0471200247/ralphkimballc-20/104-5050702-4100704

Um livro sobre modelagem de *datawarehouse* ?!
Eu já expliquei em mensagens anteriores que o meu caso nem é um 
datawarehouse, mas vamos lá: tem algum trecho desse livro que você possa 
citar para justificar as recomendações sobre índices que está sugerindo?

Atenciosamente,

Mozart Hasse 


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-03 Por tôpico Mozart Hasse
Euler,

 Você *não* mostrou essa tal tabela, os índices dela e, o mais importante, 
 as
 estatísticas de uso desses índices.
 (...)
 Ugh? Como vou supor algo que _não_ vi?

Ah, que bom que notou.
http://listas.postgresql.org.br/pipermail/pgbr-geral/2009-October/017617.html
Ainda acha que tem algo errado no meu modelo de dados sem ter essas 
informações?

 Posso estar errado (pois não vi a sua
 estrutura) mas já presenciei vários cenários em que combinei alguns 
 índices e
 diminuí consideravelmente o número deles sem prejudicar as consultas que 
 os
 utilizam. Assim, eu consegui aumentar o número de DML/s consideravelmente.

Ah, isso certamente ajudaria. Algum exemplo concreto em que isso funcionou 
para você?
Algum método automatizado ou pelo menos sistemático de como fazer isso? Não 
posso me dar ao luxo de usar o método da tentativa-e-erro num modelo com 900 
tabelas e mais de 3000 chaves estrangeiras.

 Se eu quisesse gravar mais rápido do que
 consultar, meteria os dados num arquivo TXT, não num banco de dados.

 Como tu farias integridade referencial em um TXT? Não menospreze anos de
 pesquisa em teoria de SGBDs.

Citei o caso extremo caso desempenho nas gravações fosse meu problema. Não 
é. Por enquanto o custo desse monte de índices (mesmo nas consultas, como 
bem explicado pelo Charly) ainda é muito menor do que o benefício de sua 
eventual utilização.

Atenciosamente,

Mozart Hasse 


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Mozart Hasse
Euler,

 Mozart Hasse escreveu:
  Euler escreveu:
  Você está querendo ter mais do que 32 índices em uma tabela? Há algo
  errado
  com o seu modelo de dados, não?
  
  Ué, errado por quê?!
 
 Simplesmente porque atualizar um registro implica em atualizar pelo menos 1
+
 32 + 1 arquivos. Isso é uma operação muito custosa senão inviável em
alguns
 cenários.

Como assim pelo menos 1+32+1?! Tem certeza que o Postgres ainda é tão
simplório?! O Oracle e SQL Server por exemplo só tocam num índice se a
atualização se referir a campos pertencentes a ele.
Quanto a inserções (em que pelo menos todos os índices *não condicionais*
são atualizados), obviamente elas serão relativamente mais lentas com
índices (se você medir com precisão a média em milissegundos), mas isso
nem de longe pode ser considerado um problema conceitual, pois dados são
inseridos para serem consultados. Se eu quisesse gravar mais rápido do que
consultar, meteria os dados num arquivo TXT, não num banco de dados.
Já que você acha que conhece jeitos menos errados de modelar uma tabela
que você nem sabe para que serve, nem quantos registros tem, nem a que
consultas é submetida, manda lá sua sugestão sobre o que faço para tornar
mais rápidas as gravações sem tornar imprestáveis as consultas à minha
tabelinha de 89 campos, 20 chaves estrangeiras, 44 índices e não menos do
que 10 registros.

Isso, claro, se você achar que tem argumentos para discordar do que eu disse
anteriormente:

 Esquartejar essa tabela em duas ou mais considerando que eu quase sempre 
 uso todos os 89 campos juntos soa não só como um contra-senso como
 prejudica muito qualquer esperança de desempenho.


Mozart Hasse


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Andre Fernandes
Antes de mais nada, sr. Mozart, peço que o tom nestas mensagens que tens
enviado seja menos agressivo. Não estamos aqui na lista para ler emails
agressivos.

Quanto a ter mais de 10 registros, isso para um banco de dados não é
muita coisa. Não conheço teu aplicativo para dizer se realmente há algo de
errado ou não, assim não entrarei nesse mérito. Contudo nem sempre criar
tantos índices ajuda na busca (independente do SGBD utilizado), pelo
contrário, pode até atrapalhar. Imagino que o que foi pensado foi avisar-te
para analisar a necessidade real de tantos índices.

Lembre-se de que muitos nesta lista trabalham ou já trabalham com
datawarehouses e ERPs também, assim talvez possam ajudar a adequar teu
modelo com o postgresql (caso desejes essa ajuda).

E quanto ao sr. Euler, ele é uma das pessoas que mais conhece postgreSQL no
Brasil, não menospreze os dizeres dele; pode ser até que em algum ponto erre
(ele é humano como todos nós), mas sabe muito mais de que possa parecer e
nunca o vi negar passar conhecimento.

Atenciosamente,

consultar, meteria os dados num arquivo TXT, não num banco de dados.
 Já que você acha que conhece jeitos menos errados de modelar uma tabela
 que você nem sabe para que serve, nem quantos registros tem, nem a que
 consultas é submetida, manda lá sua sugestão sobre o que faço para tornar
 mais rápidas as gravações sem tornar imprestáveis as consultas à minha
 tabelinha de 89 campos, 20 chaves estrangeiras, 44 índices e não menos do
 que 10 registros.

 Isso, claro, se você achar que tem argumentos para discordar do que eu
 disse
 anteriormente:

  Esquartejar essa tabela em duas ou mais considerando que eu quase sempre
  uso todos os 89 campos juntos soa não só como um contra-senso como
  prejudica muito qualquer esperança de desempenho.


 Mozart Hasse


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

Se eu quisesse gravar mais rápido do que



-- 
André de Camargo Fernandes
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Tarcísio Sassara
2009/10/2 Mozart Hasse mozart.ha...@usa.net:
 Como assim pelo menos 1+32+1?! Tem certeza que o Postgres ainda é tão
 simplório?!

1 + 32 + 1.

1 para escrever no log.
32 outros arquivos sendo um para cada índice.
1 para a tabela.

--
Mozart, a única *coisa estranha* que *eu* vejo é a necessidade de usar
44 índices.
Provavelmente você está criando um para cada coluna.

Você mesmo disse:
 ... eu quase sempre uso todos os 89 campos ...

Então crie 1 índice contendo todas as colunas que fazem referência às dimensões.
Mesmo que você faça uma consulta que não utilize estas colunas no filtro,
a consulta ainda poderá usar o índice parcialmente.

Não crie também índices malucos como exemplo:
1 índice para cd_cliente, outro para cd_produto e outro para as duas
colunas: cd_cliente e cd_produto.
Apenas crie 1 índice para as 2 colunas.

Entende?

Novamente eu recomendo para você o livro:
http://www.amazon.com/exec/obidos/ASIN/0471200247/ralphkimballc-20/104-5050702-4100704

--
O amigo Andre pouco tempo atrás já falou sobre os propósitos desta
lista e de nossa boa vontade.
Gostaria de acrescentar apenas o seguinte:
No processo de aprendizado devemos quebrar nossos paradigmas. Resetar
nossos conceitos.
Entender o que a outra pessoa está querendo dizer para depois apelar
para o que já sabemos e
escolher por em pratica o novo conhecimento adquirido.
Quando comecei a estudar os conceitos de um Data Warehouse, fiquei
abismado com a idéia de
quebrar totalmente as formas normais, e criar um esquema em
estrela[1]. Depois eu entendi o porque. Se
tivesse sido contrario e rejeitado a informação nunca conseguiria
construir um Warehouse decente.

[1] http://en.wikipedia.org/wiki/Star_schema


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Euler Taveira de Oliveira
Mozart Hasse escreveu:
 Como assim pelo menos 1+32+1?! Tem certeza que o Postgres ainda é tão
 simplório?! O Oracle e SQL Server por exemplo só tocam num índice se a
 atualização se referir a campos pertencentes a ele.
O PostgreSQL também (vide HOT) mas como *não* sei a que versão se refere
preferi afirmar algo conservador...

 Quanto a inserções (em que pelo menos todos os índices *não condicionais*
 são atualizados), obviamente elas serão relativamente mais lentas com
 índices (se você medir com precisão a média em milissegundos), mas isso
 nem de longe pode ser considerado um problema conceitual
Conceito *não*, mas de organização física.

Você *não* mostrou essa tal tabela, os índices dela e, o mais importante, as
estatísticas de uso desses índices. Posso estar errado (pois não vi a sua
estrutura) mas já presenciei vários cenários em que combinei alguns índices e
diminuí consideravelmente o número deles sem prejudicar as consultas que os
utilizam. Assim, eu consegui aumentar o número de DML/s consideravelmente.

 Se eu quisesse gravar mais rápido do que
 consultar, meteria os dados num arquivo TXT, não num banco de dados.
Como tu farias integridade referencial em um TXT? Não menospreze anos de
pesquisa em teoria de SGBDs.

 Já que você acha que conhece jeitos menos errados de modelar uma tabela
 que você nem sabe para que serve, nem quantos registros tem, nem a que
 consultas é submetida, manda lá sua sugestão sobre o que faço para tornar
 mais rápidas as gravações sem tornar imprestáveis as consultas à minha
 tabelinha de 89 campos, 20 chaves estrangeiras, 44 índices e não menos do
 que 10 registros.
 
Ugh? Como vou supor algo que _não_ vi?


-- 
  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] Aumentar Número de Indices por Tabe la

2009-10-02 Por tôpico Charly Frankl
Senhores, boa noite...

Vou entrar na conversa também.

Com relação a índices, sempre é um assunto polêmico, mas muito interessante,
e de extrema importância no nosso trabalho.
Bem, não conheço a aplicação em questão, logo o que eu falar aqui será com
base em conceitos e boas práticas relacionadas a aplicação dos mesmos.
Concordo com o que o Euler colocou sobre a quantidade excessiva de índices,
uma vez que o SGBD não utiliza mais de um índice por pesquisa são extremos
os casos onde há a necessidade de mais de 5 índices por tabela. Entendam são
raros, e não impossíveis. Existem problemas e situações onde isso não se
aplique, mas lembrem-se, apenas um dos tantos índices será utilizado na
pesquisa. Outro ponto importante, é o índice utilizado... Qual algorítmo?
Quais os tipos envolvidos?

Com relação a atualização, assim como em uma pesquisa, o uso de índice não é
simplório, tendo em vista que o SGBD pode fazer uso de um índice mesmo que o
índice não esteja envolvido diretamente na pesquisa (vejam que aumentamos a
complexidade aqui!) a atualização também não é simplória ao ponto de o SGBD
não tocar em um índice que não esteja envolvido na atualização da
entidade. Isso digo não apenas do PostgreSQL, mas do Oracle e DB2. As
implicações em termos muitos índices são muitas, e o custo de manutenção dos
mesmos devem ser levados em conta sim!

Compreendo que aplicações de BI/DW se utilizam de uma técnica não ortodoxa
de modelagem, e que muitos conceitos referentes a normalização são de certa
forma desprezados em virtude de aumento na performance das pesquisas, até
porque não são bases OLTP com auto indice transacional. Logo são aplicações
não ortodoxas, que se dão ao direito de não terem preocupações com custos e
perdas no momento de atualização. Ainda assim, a grande quantidade de
índices não implica diretamente na melhoria da performance das buscas, pois
se os mesmos não forem bem planejados, podemos ter índices nunca utilizados
ocupando espaço desnecessário, e infringindo uma perda também desnecessária
inclusive no momento da pesquisa, pois o otimizador pode, e eventualmente
vai, perder tempo em desconsiderar aquele índice como um candidato não
eletivo. Lembrem-se, ainda que não utilizado, ele faz parte do dicionário de
dados, o qual é utilizado pelo otimizador no momento de decidir qual índice
eleger para pesquisa.

Bem, finalizando (ainda que querendo falar mais... :-D), podemos perceber
que o tema é complexo, e não simplista... Existem muitos pontos e variáveis
a serem observadas... Todavia, a minha recomendação é, não extrapolem na
utilização de índices, vão infringir uma carga muito grande de trabalho ao
SGBD, e aqui indifere o SGBD. Comecem sempre com implementações
conservadoras, e a medida que o tempo passar e existirem informações,
apliquem as melhorias de tunning e performance necessária. Primem por manter
saudável o SGBD, e o excesso de índice pode comprometer a saúde do mesmo!

Ah, e antes que me esqueça... Senhores, acalmem-se, estamos aqui para nos
ajudar. Não deixemos que a sexta-feira e o cansaço leve para o lado pessoal
nossos debates. Eles são muito construtivos, ainda que não concordemos com
todos os pontos de vista apresentados.

Um grande abraço a todos, e um excelente final de semana!



-- 
Charly Frankl
http://javadevilopers.blogspot.com/
charlyfra...@gmail.com
Linux user #391083



2009/10/2 Euler Taveira de Oliveira eu...@timbira.com

 Mozart Hasse escreveu:
  Como assim pelo menos 1+32+1?! Tem certeza que o Postgres ainda é tão
  simplório?! O Oracle e SQL Server por exemplo só tocam num índice se a
  atualização se referir a campos pertencentes a ele.
 O PostgreSQL também (vide HOT) mas como *não* sei a que versão se refere
 preferi afirmar algo conservador...

  Quanto a inserções (em que pelo menos todos os índices *não condicionais*
  são atualizados), obviamente elas serão relativamente mais lentas com
  índices (se você medir com precisão a média em milissegundos), mas isso
  nem de longe pode ser considerado um problema conceitual
 Conceito *não*, mas de organização física.

 Você *não* mostrou essa tal tabela, os índices dela e, o mais importante,
 as
 estatísticas de uso desses índices. Posso estar errado (pois não vi a sua
 estrutura) mas já presenciei vários cenários em que combinei alguns índices
 e
 diminuí consideravelmente o número deles sem prejudicar as consultas que os
 utilizam. Assim, eu consegui aumentar o número de DML/s consideravelmente.

  Se eu quisesse gravar mais rápido do que
  consultar, meteria os dados num arquivo TXT, não num banco de dados.
 Como tu farias integridade referencial em um TXT? Não menospreze anos de
 pesquisa em teoria de SGBDs.

  Já que você acha que conhece jeitos menos errados de modelar uma tabela
  que você nem sabe para que serve, nem quantos registros tem, nem a que
  consultas é submetida, manda lá sua sugestão sobre o que faço para tornar
  mais rápidas as gravações sem tornar imprestáveis as consultas à minha
  tabelinha de 89 

Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-01 Por tôpico Fernando Maia
Olá pessoal, refiz tudo novamente mais sem sucesso... editei o config_manual
pra 64, mas continua na mesma.


2009/10/1 Tarcísio Sassara sassara.tarci...@gmail.com

 2009/10/1 Fernando Maia maia...@gmail.com:
  esse DW é um trabalho da universidade, minha tutora ensiste em dizer que
 a
  fato deve ser criada daquela forma, segundo ela, faz parte do modelo
 lógico
  da tabela fato a criação de todas as dimensões como primary key.

 Mas Fernando, está correto. Estas colunas identificam um registro na
 tabela fato.

 Explicando um pouco melhor:
 O banco de dados de produção, ou seja, aquele que é utilizado pela
 aplicação do cliente
 deve ser separado do banco que será o Data Warehouse.

 Não da para usar um mesmo modelo para as duas coisas: Produção e Análise.

 Primeiro vem o banco produção onde você vai criar todas as tabelas
 com as chaves primarias e estrangeiras,
 índices e se possível, seguindo as formas normais.

 Depois vem o banco warehouse que deve conter uma estrutura
 especifica para este problema.
 Uma dica para o warehouse que tem muitas dimensões é ver se você não
 está colocando 2 vezes a mesma dimensão.
 Ex: Uma coluna apontando para uma dimensão ano e outra apontando
 para mês, quando o correto seria uma única referência para
 uma dimensão chamada data.

 Depois você deve criar um script que transforma e envia os dados do
 banco produção para o banco warehouse.

 Claro, se você estiver carregando os dados vindos de um arquivo de
 texto, você não terá um banco em produção.
 Somente terá o warehouse.


 Eu lhe recomendo um livro muito bom:
 The Data Warehouse Toolkit (Ralph Kimball)

 http://www.amazon.com/exec/obidos/ASIN/0471200247/ralphkimballc-20/104-5050702-4100704

 Abraço!

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




-- 
Fernando Maia
Acadêmico Sistemas de Informação-CPCX-UFMS
msn: maia_...@hotmail.com
email: maia...@gmail.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] Aumentar Número de Indices por Tabe la

2009-10-01 Por tôpico Euler Taveira de Oliveira
Fernando Maia escreveu:
 Olá pessoal, refiz tudo novamente mais sem sucesso... editei o
 config_manual pra 64, mas continua na mesma.
 
Você verificou o caminho dos binários do PostgreSQL? Você verificou o caminho
do $PGDATA? Pelo menos um dos dois devem estar apontando para o local errado.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-10-01 Por tôpico Mozart Hasse
Ué,

 Fernando Maia escreveu:
  Gostaria de pedir a ajuda de vocês, estou precisando aumentar o meu
  número de indices por tabela, que por default aceita no máximo 32
  indexações.

Meu recorde é 44 índices numa tabela com 89 campos e 20 FKs, isso porque as
outras 40 colunas menos usadas já foram para uma tabela auxiliar.
E olha que é um sistema ERP, imagina quando meterem isso num
datawarehouse...

 Euler escreveu:
 Você está querendo ter mais do que 32 índices em uma tabela? Há algo
errado
 com o seu modelo de dados, não?

Ué, errado por quê?!
Tabelas normalizadas têm por definição um monte de FKs, e cada uma delas
quase sempre precisa de um ou dois índices. Esquartejar essa tabela em duas
ou mais considerando que eu quase sempre uso todos os 89 campos juntos soa
não só como um contra-senso como prejudica muito qualquer esperança de
desempenho.


Mozart Hasse


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-01 Por tôpico Mozart Hasse
Oi Fernando,

2009/10/1 Fernando Maia maiaapc em gmail.com:
 Em um DW eu coloco na tabela fato as chaves estrangeiras de cada
 dimensão e coloco apenas um índice contendo todas estas chaves.

Conceitualmente correto *s*e* não houver dependências funcionais entre as
chaves.
Se houver, ou seja, de os valores de algumas chaves determinarem os valores de
outras (por exemplo, se você tiver chaves separadas para dia, mês, ano e dia
da semana), aí a utilidade mesmo que *conceitual* (porque utilidade prática
não tem nenhuma) de uma chave primária com todos os campos é bastante
questionável.

 esse DW é um trabalho da universidade, minha tutora ensiste em dizer que a
 fato deve ser criada daquela forma, segundo ela, faz parte do modelo
lógico
 da tabela fato a criação de todas as dimensões como primary key.

Ah, que bonitinho... e o que é que o modelo lógico tem a ver com a
implementação?! É uma fonte inspiradora ou emburrecedora?
Nada contra imaginar um banco de dados com desempenho infinito, número de
campos infinito e sem limite de espaço, porém na hora de colocar em prática
os conceitos e entidades planejadas pode ser necessário representá-las ou
armazená-las em objetos separados ou similares. Afinal, o desempenho não é
conceitual, o trabalho é concreto e portanto deve oferecer um ganho de
desempenho concreto comparado com consultas diretas aos dados de origem.

Se os próprios livros de análise e banco de dados já falam que temos como
etapas a elaboração do modelo *lógico* (conceitual, com a chave primária
inútil que ela quer) e do modelo *físico* (viável, útil e eficiente), por
que ela vai querer misturar?

Convença ela a ponderar melhor esse idealismo conceitual. *Nenhum* banco de
dados aceita muitos campos num índice exatamente porque tratar campos demais
torna o índice menos eficiente, ainda mais numa chave primária. O limite do
Postgres (32 campos num índice) já é muito alto comparado com outros bancos
de dados, e querer superá-lo só por um capricho conceitual precisa de uma
excelente justificativa.

O ônus da prova cabe a quem afirma. Pelo que entendi ela alega que *deve* ser
desse jeito. Pois bem, pode começar perguntando a ela de qual parágrafo de
que livro ela *pensa* que tirou essa idéia, pois nem no meio acadêmico ouvi
falar dessa necessidade.

Atenciosamente,

Mozart Hasse


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-10-01 Por tôpico Euler Taveira de Oliveira
Mozart Hasse escreveu:
 Euler escreveu:
 Você está querendo ter mais do que 32 índices em uma tabela? Há algo
 errado
 com o seu modelo de dados, não?
 
 Ué, errado por quê?!

Simplesmente porque atualizar um registro implica em atualizar pelo menos 1 +
32 + 1 arquivos. Isso é uma operação muito custosa senão inviável em alguns
cenários.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Euler Taveira de Oliveira
Fernando Maia escreveu:
 Gostaria de pedir a ajuda de vocês, estou precisando aumentar o meu
 número de indices por tabela, que por default aceita no máximo 32
 indexações.
 
Você está querendo ter mais do que 32 índices em uma tabela? Há algo errado
com o seu modelo de dados, não?

Em todo caso, você precisará recompilar o PostgreSQL após alterar o parâmetro
INDEX_MAX_KEYS no arquivo src/include/pg_config_manual.h. Além disso, você
precisará executar o initdb novamente, ou seja, terá que fazer uma cópia de
segurança (aka _dump_) e uma restauração (aka _restore_).


-- 
  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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Fernando Maia
Olá Euler, a resposta é sim preciso de mais de 32 indices em uma tabela, no
caso estou desenvolvendo um data warehouse, e minha tabela fato tera mais de
32 dimensões, o por isso de fazer essa modificação.
Eu sei dessa alteração no pg_config_manual.h, mas não sei se fiz certo... o
que eu fiz foi o seguinte: baixei o postgres.tar.gz alterei o
pg_config_manual.h e compilei e instalei o postgres... mas não resolveu meu
problema.
Será que fiz da forma correta?

Agradeço a atenção



2009/9/30 Euler Taveira de Oliveira eu...@timbira.com

 Fernando Maia escreveu:
  Gostaria de pedir a ajuda de vocês, estou precisando aumentar o meu
  número de indices por tabela, que por default aceita no máximo 32
  indexações.
 
 Você está querendo ter mais do que 32 índices em uma tabela? Há algo errado
 com o seu modelo de dados, não?

 Em todo caso, você precisará recompilar o PostgreSQL após alterar o
 parâmetro
 INDEX_MAX_KEYS no arquivo src/include/pg_config_manual.h. Além disso, você
 precisará executar o initdb novamente, ou seja, terá que fazer uma cópia de
 segurança (aka _dump_) e uma restauração (aka _restore_).


 --
  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




-- 
Fernando Maia
Acadêmico Sistemas de Informação-CPCX-UFMS
msn: maia_...@hotmail.com
email: maia...@gmail.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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Tarcísio Sassara
2009/9/30 Fernando Maia maia...@gmail.com:
 Eu sei dessa alteração no pg_config_manual.h, mas não sei se fiz certo... o
 que eu fiz foi o seguinte: baixei o postgres.tar.gz alterei o
 pg_config_manual.h e compilei e instalei o postgres... mas não resolveu meu
 problema.

Então colega, se você baixo o Postgres, alterou o arquivo pg_config_manual.h
depois configurou, compilou, instalou e criou o cluster com initdb,
não deveria dar problemas.

Eu recomendo dar uma revisada nos passos que você seguiu.

Se você já tiver feito as operações acima sem antes ter alterado o pg_config,
você vai precisar configurar, compilar, instalar e criar um novo
cluster com o initdb.

Os comandos abaixo para criar uma tabela e um índice com 40 colunas deu certo:

drop table if exists teste;
create table teste (
 cola integer not null, colb integer not null, colc integer not null,
cold integer not null,
 cole integer not null, colf integer not null, colg integer not null,
colh integer not null,
 coli integer not null, colj integer not null, colk integer not null,
coll integer not null,
 colm integer not null, coln integer not null, colo integer not null,
colp integer not null,
 colq integer not null, colr integer not null, cols integer not null,
colt integer not null,
 colu integer not null, colv integer not null, colw integer not null,
colx integer not null,
 coly integer not null, colz integer not null, cola2 integer not null,
colb2 integer not null,
 colc2 integer not null, cold2 integer not null, cole2 integer not
null, colf2 integer not null,
 colg2 integer not null, colh2 integer not null, coli2 integer not
null, colj2 integer not null,
 colk2 integer not null, coll2 integer not null, colm2 integer not
null, coln2 integer not null,
 colo2 integer not null, colp2 integer not null, colq2 integer not
null, colr2 integer not null,
 cols2 integer not null, colt2 integer not null, colu2 integer not
null, colv2 integer not null,
 colw2 integer not null, colx2 integer not null, coly2 integer not
null, colz2 integer not null);

create index teste_idx on teste using btree (
 cola, colb, colc, cold, cole, colf, colg, colh, coli, colj, colk,
coll, colm, coln, colo, colp,
 colq, colr, cols, colt, colu, colv, colw, colx, coly, colz, cola2,
colb2, colc2, cold2, cole2,
 colf2, colg2, colh2, coli2, colj2, colk2, coll2, colm2, coln2);

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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Euler Taveira de Oliveira
Tarcísio Sassara escreveu:
 Os comandos abaixo para criar uma tabela e um índice com 40 colunas deu certo:
 
Ele não quer criar um índice de 40 colunas e sim 40 índices em uma tabela.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Fernando Maia
exato... na realidade preciso fazer isso:

create table fato(
coluna01 integer,
coluna02  integer,
coluna03  integer,
.
.
.
coluna50  integer,
PRIMARY KEY(coluna01,coluna02,coluna03...coluna50) );





2009/9/30 Euler Taveira de Oliveira eu...@timbira.com

 Tarcísio Sassara escreveu:
  Os comandos abaixo para criar uma tabela e um índice com 40 colunas deu
 certo:
 
 Ele não quer criar um índice de 40 colunas e sim 40 índices em uma tabela.


 --
   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




-- 
Fernando Maia
Acadêmico Sistemas de Informação-CPCX-UFMS
msn: maia_...@hotmail.com
email: maia...@gmail.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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Tarcísio Sassara
2009/9/30 Euler Taveira de Oliveira eu...@timbira.com:
 Ele não quer criar um índice de 40 colunas e sim 40 índices em uma tabela.

1: Foi mals. Acho que não entendi/li direito. =D

2: Nunca vi isso.
Em um DW eu coloco na tabela fato as chaves estrangeiras de cada
dimensão e coloco
apenas um índice contendo todas estas chaves.

E de qualquer maneira, a constante INDEX_MAX_KEYS encontrada no
pg_config_manual se refere a quantidade
maxíma de colunas em um índice e não a quantidade de índices por tabela.


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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Tarcísio Sassara
2009/9/30 Fernando Maia maia...@gmail.com:
 exato... na realidade preciso fazer isso:

 create table fato(
 coluna01 integer,
 coluna02  integer,
 coluna03  integer,
 .
 .
 .
 coluna50  integer,
 PRIMARY KEY(coluna01,coluna02,coluna03...coluna50) );

Opá, opá.
Então, da uma olhada lá no arquivo pg_config_manual.
O único detalhe sobre performance é colocar um número múltiplo de 32.
Talvez 64 resolva, não?
E siga tudo do começo: configura, compila, instala e cria o cluster com initdb.



Abraço.

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


Re: [pgbr-geral] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Euler Taveira de Oliveira
Eu escrevi:
 Tarcísio Sassara escreveu:
 Os comandos abaixo para criar uma tabela e um índice com 40 colunas deu 
 certo:

 Ele não quer criar um índice de 40 colunas e sim 40 índices em uma tabela.
 
 
Opsss... [Faltando cafeína a essa hora da noite] É isso mesmo. Índice com 40
colunas.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Euler Taveira de Oliveira
Fernando Maia escreveu:
 Será que fiz da forma correta?
 
Você tem que executar o initdb novamente para criar outro _cluster_.


-- 
  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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Fernando Maia
Olá pessoal,
Eu gostaria de discutir isso com vcs:
Em um DW eu coloco na tabela fato as chaves estrangeiras de cada
dimensão e coloco
apenas um índice contendo todas estas chaves.
esse DW é um trabalho da universidade, minha tutora ensiste em dizer que a
fato deve ser criada daquela forma, segundo ela, faz parte do modelo lógico
da tabela fato a criação de todas as dimensões como primary key.

2009/9/30 Euler Taveira de Oliveira eu...@timbira.com

 Fernando Maia escreveu:
  Será que fiz da forma correta?
 
 Você tem que executar o initdb novamente para criar outro _cluster_.


 --
   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




-- 
Fernando Maia
Acadêmico Sistemas de Informação-CPCX-UFMS
msn: maia_...@hotmail.com
email: maia...@gmail.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] Aumentar Número de Indices por Tabe la

2009-09-30 Por tôpico Tarcísio Sassara
2009/10/1 Fernando Maia maia...@gmail.com:
 esse DW é um trabalho da universidade, minha tutora ensiste em dizer que a
 fato deve ser criada daquela forma, segundo ela, faz parte do modelo lógico
 da tabela fato a criação de todas as dimensões como primary key.

Mas Fernando, está correto. Estas colunas identificam um registro na
tabela fato.

Explicando um pouco melhor:
O banco de dados de produção, ou seja, aquele que é utilizado pela
aplicação do cliente
deve ser separado do banco que será o Data Warehouse.

Não da para usar um mesmo modelo para as duas coisas: Produção e Análise.

Primeiro vem o banco produção onde você vai criar todas as tabelas
com as chaves primarias e estrangeiras,
índices e se possível, seguindo as formas normais.

Depois vem o banco warehouse que deve conter uma estrutura
especifica para este problema.
Uma dica para o warehouse que tem muitas dimensões é ver se você não
está colocando 2 vezes a mesma dimensão.
Ex: Uma coluna apontando para uma dimensão ano e outra apontando
para mês, quando o correto seria uma única referência para
uma dimensão chamada data.

Depois você deve criar um script que transforma e envia os dados do
banco produção para o banco warehouse.

Claro, se você estiver carregando os dados vindos de um arquivo de
texto, você não terá um banco em produção.
Somente terá o warehouse.


Eu lhe recomendo um livro muito bom:
The Data Warehouse Toolkit (Ralph Kimball)
http://www.amazon.com/exec/obidos/ASIN/0471200247/ralphkimballc-20/104-5050702-4100704

Abraço!

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