Consultas demoradas: banco ou Delphi?
30/11/2015
0
Rodrigo Oliveira
Post mais votado
01/02/2016
Carregando apenas campos necessários [ Ao invés do select * from] .
Lembro que tinha uma tela de recebimento de mercadorias, com o passar do tempo, o setor esperava cerca de 8 a 10 minutos.
Ao estruturar bem a consulta e criação de views conseguir reduzir o retorno para rum time.
Só para complementar o servidor deve está em perfeito estado de processamento de dados.
Rede estruturada.
Raimundo Pereira
Mais Posts
01/12/2015
Marcos P
Feito isso, tudo que sobra é problema de infraestrutura ( rede, por exemplo ) ou da arquitetura da aplicação.
Em outras palavras, otimize as queries para que elas tenham a melhor performance possível no ambiente nativo do banco de dados e, depois, olhe seu ambiente de desenvolvimento !
03/12/2015
Rodrigo Oliveira
31/01/2016
Rodrigo Oliveira
???
31/01/2016
Rodrigo Oliveira
???
01/02/2016
Ronaldo Filho
Uma coisa que causa muita lentidão é o fato do pessoal trabalhar com acesso direto ao banco de dados, sem o uso de dataSet's em memória, é difícil para o programador esperar velocidade se o tratamento das operações com o banco de dados ocorrem com ele ainda conectado ao banco, o que se fala muito hoje é da informação tratada sem que a conexão com o banco permaneça ativa, ou seja, a conexão com o banco ela é feita apenas quando você vai pegar e salvar a informação, fechando-a logo após receber ou salvar a informação. O que é muito comum no Delphi é, o programador através de uma query, por exemplo, abre a conexão com o banco e mesmo recebendo o resultado permanece com ela ativa, fechando apenas quando finaliza a tela, nesse momento devemos imaginar, apenas uma máquina utilizando o sistema não vai trazer tanta lentidão, mas quando você tiver 15 máquinas usadas ao mesmo tempo, com conexões ativas, vai ocorrer lentidão, por que serão 15 instâncias de conexões usando memória, processador, entre outros recursos, sem contar que o servidor do banco de dados estará sobre carregado tendo que segurar 15 conexões com o banco, mesmo que elas não estejam coordenando dados.
No caso a orientação que posso deixar aqui é, utilize o que você poder para que, ao utilizar a conexão com o banco deixe ela ativa apenas no momento que precise coletar dados ou salvar, assim que obtiver os dados ou o retorno da operação que estava realizando, encerre a conexão, pois assim você terá as informações que precisava e não estará congestionando a comunicação com o banco. Conectar apenas quando for realmente necessário.
Outras coisas são, evitar salvar dados nulos em tabelas, realizar selects com subselects, muitos joins numa mesma consulta ou unions, ter cuidado também ao criar views, por que também essas estruturas pré-definadas podem acarretar problemas se feitas de maneira a carregar muita informação de uma vez, em listagens podemos dividir a quantidade de informação a ser listada e conforme for sendo necessário poderemos carregar mais informação, essa informação pode ser carregada em blocos pequenos a fim de melhorar mais a performance das operações.
Deve-se notar que, ao desenvolver aplicações para usos específicos, você deve realmente se preocupar com os dispositivos que irão executar a tua aplicação. Você deve se preocupar com o uso de memória, processamento, rede, entre outros fatores que irão fazer jus a um maior ganho de desempenho, muita gente fala sobre começar a trabalhar com escalonamento de memória, mas devemos lembrar que hoje as linguagens e os padrões de desenvolvimento já trabalhando essa parte para você, então você deve se preocupar mais com a questão dos termos de sua aplicação quanto ao uso de memória (sem se preocupar com o escalonamento), processamento (trabalhar bem o estado ocioso de sua aplicação) muitas linguagens oferecem uma gama bem vasta de recursos para controle de processamento em status ocioso, uso da rede (conexões em rede apenas em momentos necessários à aplicação), entre outros.
Bom grande ficam ai algumas dicas para refletir. Tudo inicia com as escolhas de tecnologias e métodos, até a forma como você vai resolver o problema proposta para a construção da aplicação.
01/02/2016
Rodrigo Oliveira
01/02/2016
Ronaldo Filho
01/02/2016
Rodrigo Oliveira
Clique aqui para fazer login e interagir na Comunidade :)