Fórum Duvida qto a banco grande #300823

26/10/2005

0

Tenho um banco que tem tabelas com milhões de registro em cada tabela. Queria opiniões sobre qual a melhor forma de se trabalhar com este banco, pois as consultas são muito lentas e as vezes demoram muitos minutos. Alguém tem um banco assim, como faz pra contornar o problema de performance. Preciso de algumas dicas pra melhorar o desempenho do meu sistema. Obrigado.


Foxcyber

Foxcyber

Responder

Posts

26/10/2005

Silviogs

Olá amigo

qual o banco que vc usa?
que tipo de acesso usa?
vc teria como mostrar a query para analisarmos? pelo menos uma delas?

com isso poderiá-mos ajudá-lo melhor.

Atenciosamente

Silvio Guedes


Responder

Gostei + 0

26/10/2005

Motta

Qual bd ?

Como são estas consultas ? Totalizações ? Buscas discretas ?

Com que frequencia são feitas ?

Como são as tabelas ? Quantos registros realmente ?

As buscas fazem joins ? Muitos ?

Em geral o uso de indices ajuda, mas sem maiores detalhes é duro opinar.


Responder

Gostei + 0

26/10/2005

Foxcyber

Uso SQLServer, com acesso via ADO. As querys sao normais por exemplo:

Em uma tabela que tem os campo Grupo, DtHrTransacao, NrCartao etc

Faço um select assim:

select Grupo, DtHrTransacao, NrCartao from validacoes
where DtHrTransacao between :data1 and :data2

é isso. Só que essa tabela é gigantesca. Te milhoes e milhoes de registros de várias datas.


Responder

Gostei + 0

26/10/2005

Foxcyber

Essa tabela de validacoes é a maior e que me da mais problemas, as vezes eu faco um ou dois joins com ela nao passa disso com outras tabelas nao muito grandes. Essa tabela validacoes possui indices. Ja fiz também views com ela mas nao adiantou muito.


Responder

Gostei + 0

26/10/2005

Motta

Um indice por DtHrTransacao PODERIA melhorar a consulta, mas se o intervalo do between for grande o otimizador pode escolher uma busca na tabela toda, o Oracle faz isto.

Não dá para saber a regra de negocio mas poderia criar uma flag de registros mais buscados , tipo mês corrente etc ?

Quantos valores distintos existem para DtHrTransacao ,e quantos registros tem a tabela , como é esta relação ?


Responder

Gostei + 0

26/10/2005

Foxcyber

Valores distintos para DtHrTransacao sao 30 ou 31
O numero de registros na tabela atualmente esta com 3 milhoes


Responder

Gostei + 0

26/10/2005

Motta

Na melhor das hipoteses ele vai retornar 1/31 da tabela, em geral assim o full table fica mais barato (tenho dúvidas) o sqlserver gera plano de execução ? O que ele diz ?
Não serve criar uma agregadora por dia? Voce poderia atualiza-la todo dia via um processo batch.


Responder

Gostei + 0

26/10/2005

Foxcyber

Estava pensando nisso criar uma agregadora, por isso postei a msg para ter mais ideias ou ver se essa seria a melhor forma.


Responder

Gostei + 0

26/10/2005

Foxcyber

Alguém ja fez este tipo de coisa, com tabelas agregadoras. Vale a pena? Será que terei um ganho considerável? Alguém tem mais alguma idéia diferente?


Responder

Gostei + 0

26/10/2005

Motta

Vc pode fazer uma agregadora com triggers, vc viu o plano de execução ?


Responder

Gostei + 0

26/10/2005

Foxcyber

Nao, pq nao sei como fazer isso. Poderia explicar?


Responder

Gostei + 0

26/10/2005

Motta

VEJA SE ESTES ARTIGOS TE AJUDAM , EU NAO CONHEÇO SQLSERVER.

http://www.imasters.com.br/artigo.php?cn=228&cc=86
http://www.imasters.com.br/artigo.php?cn=2702&cc=86

http://www.imasters.com.br/artigo.php?cn=389&cc=73
http://www.imasters.com.br/artigo.php?cn=390&cc=73
http://www.imasters.com.br/artigo.php?cn=388&cc=73
http://www.imasters.com.br/artigo.php?cn=387&cc=73

basicamente é :

criar uma tabela totalizadora

criar uma triggers para com base no movimento da tabela base

inserir / atualizar (somar diminuir) valores da agregadora

não achei um artigo especifico de como fazer , mas os acima dao uma ideia


Responder

Gostei + 0

26/10/2005

Foxcyber

Valeu cara, muito obrigado pela sua paciencia vou dar uma olhada e se melhorar ou resolver meu problema posto aqui as melhorias pra que todos se beneficiem deste tópico;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar