Olá galera,
Perdi uma semana de trabalho em virtude desta Procedure, vou fazer uma breve descrição do meu cenário.
- Tenho em torno de 1,5 Milhões de arquivos e junto seus metadados.
- Estou salvando esse arquivos em RBS e não em banco.
- Estou criando subpastas para inserção de cada documento de acordo com seu metadado.
O meu case foi que quanto mais informações eu inseria na base de dados mais a performance do Console caia, depois de muitas analises, como citei no começo em torno de uma semana, analisando SQL e Código, percebi que essa Procedure proc_ListUrls estava demorando um tempo muito elevado para executar, então juntamento com meu Visual Studio comecei a realizar o debug.
Ao executar o trecho de código abaixo:
- DocLib = web.Lists[“lista”];
- SPFolder SubFolder = DocLib.RootFolder.SubFolders[subPasta];
O atributo marcado em vermelho faz com que a execute a proc_ListUrls e isso realizada uma query sem where, ou seja, eu já tinha mais de 800k de itens cadastrados, em toda iteração que o meu Console vazia retornava os 800k itens. Isto gasta muito processador e memória.
Minha alternativa foi usar o trecho abaixo:
- SPFolder subFolder = srcFolders.Add(nomePasta);
Consegue criar uma nova subpasta e dar o get no SPFolder sem usar DocLib.RootFolder.SubFolders que é muito caro e esta onerando meu servidor de banco e App.
Espero que esse meu case possa ter ajudado quem vem passando pelo mesmo problema.
Isso ai amigos.
Até a próxima.
Deixe um comentário