none
Performance Entity Framework RRS feed

  • Pergunta

  • Bom dia,

    Estou com um problema grande de performance com o Entity. Existe uma tabela no banco que possui 11500 registros atualmente.

    Contextualizando.

    A aplicação possui uma listagem de registros com paginação. Essa listagem possui uma regra de negócio complexa e envolve todos os registros da tabela, o que na paginação ao trocar de página teria que "buscar todos os registros, ordenar e depois paginar (Isso a cada troca de página 1,2,3,4, [...])".

    Diante dessa regra de negócio, foi criado um console application para ordenar de acordo com uma regra específica e inserir os registros novamente com a ordem correta. Assim a paginação ficaria com está e os registros no banco de dados ordenados.

    O problema enfrentado é que a demora está grande para "Buscas, deletar e inserir". A Aplicação em modo DEBUG simplesmente fecha quando insere 5000 registros.

    Alguém conhece alguma forma de otimizar este processo via aplicação? COnfiguração do Entity etc ....

    Agradeço antecipadamente


    Watson Marconato

    segunda-feira, 30 de novembro de 2015 10:55

Respostas

  • Olá,

    Eu acredito que neste caso existem vários aspectos para os quais podemos olhar. Quando você carrega estes registros, o Entity traz informações de outras tabelas, por exemplo?

    Se sim, esses registros são necessários quando é feita essa busca? Pois se não forem, é possível configurar para que o Entity trabalhe em modo "Lazy loading" (carregando apenas as informações que forem solicitadas).

    Se este não for o caso, eu acredito que você poderia trabalhar na sua busca de forma diferente. Se não for problema, poderia postar o trecho onde você faz essa busca para que possamos analisar e ver o que é possível melhorar nele?

    Outra opção também é usar outra ferramenta para realizar apenas as buscas. O Dapper é muito bom e apresenta resultados consideráveis dependendo da informação com a qual você for trabalhar, e é bem simples de entender também.

    Mas como disse, depende do que precisa ser feito, talvez o Dapper não resolva.

    Se puder mostrar o código, acho que conseguiria te ajudar a entender a lógica e chegar a uma solução viável.

    No mais, espero ter ajudado.

    • Sugerido como Resposta Richof quarta-feira, 2 de dezembro de 2015 00:05
    • Marcado como Resposta Watson Marconato quinta-feira, 19 de maio de 2016 17:24
    segunda-feira, 30 de novembro de 2015 12:18

Todas as Respostas

  • Olá,

    Eu acredito que neste caso existem vários aspectos para os quais podemos olhar. Quando você carrega estes registros, o Entity traz informações de outras tabelas, por exemplo?

    Se sim, esses registros são necessários quando é feita essa busca? Pois se não forem, é possível configurar para que o Entity trabalhe em modo "Lazy loading" (carregando apenas as informações que forem solicitadas).

    Se este não for o caso, eu acredito que você poderia trabalhar na sua busca de forma diferente. Se não for problema, poderia postar o trecho onde você faz essa busca para que possamos analisar e ver o que é possível melhorar nele?

    Outra opção também é usar outra ferramenta para realizar apenas as buscas. O Dapper é muito bom e apresenta resultados consideráveis dependendo da informação com a qual você for trabalhar, e é bem simples de entender também.

    Mas como disse, depende do que precisa ser feito, talvez o Dapper não resolva.

    Se puder mostrar o código, acho que conseguiria te ajudar a entender a lógica e chegar a uma solução viável.

    No mais, espero ter ajudado.

    • Sugerido como Resposta Richof quarta-feira, 2 de dezembro de 2015 00:05
    • Marcado como Resposta Watson Marconato quinta-feira, 19 de maio de 2016 17:24
    segunda-feira, 30 de novembro de 2015 12:18
  • (Depois de muito tempo...)

    Foi mudado a forma da consulta que estava com o lazy ativado e ocasionava uma grande demora.

    Obrigado pela resposta, ela auxiliou bastante na resolução do problema.


    Watson Marconato

    quinta-feira, 19 de maio de 2016 17:24