Duvida qto a banco grande

Delphi

26/10/2005

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

Curtidas 0

Respostas

Silviogs

Silviogs

26/10/2005

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


GOSTEI 0
Motta

Motta

26/10/2005

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.


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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.


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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.


GOSTEI 0
Motta

Motta

26/10/2005

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 ?


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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


GOSTEI 0
Motta

Motta

26/10/2005

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.


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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?


GOSTEI 0
Motta

Motta

26/10/2005

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


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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


GOSTEI 0
Motta

Motta

26/10/2005

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


GOSTEI 0
Foxcyber

Foxcyber

26/10/2005

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;


GOSTEI 0
POSTAR