none
A concessão de memória de consulta detectou "ExcessiveGrant", o que pode afetar a confiabilidade RRS feed

  • Pergunta

  • Pessoal, gostaria do auxílio. Estou analisando o plano da consulta abaixo, no qual apresenta concessão excessiva indevida de memória. Identifique a tabela e índice que pode ser o provável causador do problema, sendo o tipo de dados varchar(max) definido nas colunas da tabela nfx. Poderia esse ser o causador. Qual seria a melhor alternativa para arrumar sem ter que modificar tipo de dados da aplicação? Versão SQL Server 2016. Agradeço desde já!

    The query memory grant detected "ExcessiveGrant", which may impact the reliability. Grant size: Initial 10544 KB, Final 10544 KB, Used 440 KB.

    SELECT nfs.nfs_serie, 
           nfs.nfs_numero, 
           nfs.nfs_dt_vcto, 
           nfs.nfs_valor, 
           cnv.cnv_nome, 
           nfs.nfs_tipo, 
           nfs.nfs_desconto, 
           nfs.nfs_perc_multa, 
           nfs.nfs_vlr_multa, 
           nfs.nfs_status, 
           nfs.nfs_dt_emis, 
           emp.emp_raz_soc, 
           nfs.nfs_emp_codigo, 
           nfs.nfs_nde_serie, 
           nfs.nfs_nde_tipo, 
           nfs.nfs_nde_num, 
           nfs.nfs_perc_iss, 
           nfs.nfs_perc_ir, 
           nfs.nfs_vlr_iss, 
           nfs.nfs_vlr_ir, 
           nfs.nfs_perc_juro, 
           nfs.nfs_nfl_num, 
           nfs.nfs_usr_login, 
           nfs.nfs_dt_envio, 
           emp.emp_nome_fantasia, 
           nfs.nfs_dt_receb, 
           nfs.nfs_fluxo_caixa, 
           nfs.nfs_ind_tipo_fatura, 
           nfs.nfs_iss_ret, 
           nfs.nfs_ir_ret, 
           nfs.nfs_cssl_ret, 
           nfs.nfs_cofins_ret, 
           nfs.nfs_pis_ret, 
           nfs.nfs_vlr_cssl, 
           nfs.nfs_vlr_cofins, 
           nfs.nfs_vlr_pis, 
           nfs.nfs_vlr_outros_imp, 
           str.str_nome, 
           nfs.nfs_remessa, 
           nfs.nfs_emp_cod, 
           nfs.nfs_str_cod, 
           emp.emp_cr_modelo_import, 
           emp.emp_cnv_cod, 
           nfs.nfs_nfl_serie, 
           nfl.nfl_rps_numero, 
           nfl.nfl_rps_serie, 
           nfx.nfx_numero 
    FROM   nfs 
           LEFT OUTER JOIN nfl 
                        ON nfs.nfs_nfl_serie = nfl.nfl_serie 
                           AND nfs.nfs_nfl_num = nfl.nfl_num 
           LEFT OUTER JOIN nfx 
                        ON nfs.nfs_nfl_serie = nfx.nfx_nfl_serie 
                           AND nfs.nfs_nfl_num = nfx.nfx_nfl_num, 
           cnv, 
           emp, 
           str 
    WHERE  ( nfs.nfs_status = 'P' ) 
           AND ( nfs.nfs_emp_cod = emp.emp_cod ) 
           AND ( cnv.cnv_cod = nfs.nfs_emp_codigo ) 
           AND ( str.str_cod = nfs.nfs_str_cod ) 
           AND ( nfs_status <> 'C' ) 
           AND ( nfs.nfs_tipo <> 'NC' ) 
           AND ( nfs.nfs_dt_vcto >= '2021-01-01 00:00:00.000' ) 
           AND ( nfs.nfs_dt_vcto <= '2021-01-31 23:59:59.000' ) 
           AND ( NOT EXISTS (SELECT 1 
                             FROM   cnv b 
                             WHERE  b.cnv_emp_cod = emp.emp_cod 
                                    AND b.cnv_caixa_fatura = 'B') ) 
    ORDER  BY nfs.nfs_dt_emis DESC, 
              nfs.nfs_serie ASC, 
              nfs.nfs_numero DESC


    CREATE NONCLUSTERED INDEX [idx_nfx_nfl_serie_num] ON [dbo].[nfx]
    (
    	[nfx_nfl_serie] ASC,
    	[nfx_nfl_num] ASC
    )
    INCLUDE([nfx_numero]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    SQL Server parse and compile time: 
       CPU time = 65 ms, elapsed time = 65 ms.
    
    (567 rows affected)
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'NFL'. Scan count 0, logical reads 197, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfs'. Scan count 1, logical reads 294, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'emp'. Scan count 1, logical reads 151, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'cnv'. Scan count 2, logical reads 14, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'str'. Scan count 1, logical reads 9, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfx'. Scan count 1, logical reads 2842, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    
    (1 row affected)
    
     SQL Server Execution Times:
       CPU time = 172 ms,  elapsed time = 394 ms.
    
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.




    Jerfeson S Barbosa


    sexta-feira, 15 de janeiro de 2021 00:32

Todas as Respostas

  • Jerfeson,

    Se analisar as estimativas de execuções e número de linhas a serem executadas os valores estão coerentes, mas um pouco abaixo do que foi realmente processado.

    Parece-me que isso esteja relacionado com Estásticas das suas tabelas desatualizadas, tanto as que você criou como também as internas do seu banco de dados.

    Você já realizou algum procedimento de atualizações de estátisticas?

    Vamos através da função de sistema Stats_Date() obter maiores detalhes sobre as estatísticas do seu banco de dados:

    SELECT name AS stats_name, 
        STATS_DATE(object_id, stats_id) AS statistics_update_date
    FROM sys.stats 
    order by statistics_update_date Desc
    Go
    

    Já o bloco de código abaixo, apresenta uma query que poderá nos ajudar a identificar as taxas de estatísticas dos índices, bem como, realizar a sua respectiva atualização:

    --Create a table for the outdated statistics
    CREATE TABLE Outdated_statistics
    ([Table name] sysname,
    [Index name] sysname,
    [Last updated] datetime NULL,
    [Rows modified] int NULL)
    GO
    
    --Get the list of outdated statistics
    INSERT INTO Outdated_statistics
    SELECT OBJECT_NAME(id),name,STATS_DATE(id, indid),rowmodctr FROM sys.sysindexes
    WHERE STATS_DATE(id, indid)<=DATEADD(DAY,-1,GETDATE()) 
    AND rowmodctr>0 
    AND id IN (SELECT object_id FROM sys.tables)
    GO
    
    Select * from Outdated_statistics
    
    --Set the thresholds when to consider the statistics outdated
    DECLARE @hours int
    DECLARE @modified_rows int
    DECLARE @update_statement nvarchar(300);
    
    SET @hours=24
    SET @modified_rows=10
    
    --Update all the outdated statistics
    DECLARE statistics_cursor CURSOR FOR
    SELECT 'UPDATE STATISTICS '+OBJECT_NAME(id)+' '+name
    FROM sys.sysindexes
    WHERE STATS_DATE(id, indid)<=DATEADD(HOUR,-@hours,GETDATE()) 
    AND rowmodctr>=@modified_rows 
    AND id IN (SELECT object_id FROM sys.tables)
     
    OPEN statistics_cursor;
    FETCH NEXT FROM statistics_cursor INTO @update_statement;
     
     WHILE (@@FETCH_STATUS <> -1)
     BEGIN
      EXECUTE (@update_statement);
      PRINT @update_statement;
     
     FETCH NEXT FROM statistics_cursor INTO @update_statement;
     END;
     
     PRINT 'The outdated statistics have been updated.';
    CLOSE statistics_cursor;
    DEALLOCATE statistics_cursor;
    GO
    
    

    Valide inicialmente antes de aplicar em seu ambiente de produção.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 15 de janeiro de 2021 11:15
  • Você já realizou algum procedimento de atualizações de estatísticas? Sim, inclusive uso os famosos scripts de Ola Hallengren como rotinas de backups e manutenções dos bancos. Creio que não seja atualização das estatísticas, pois realizo a manutenção semanalmente. Por desencargo rodei os scripts acima pedido e depois analisei o plano da query, no qual o resultado foi o mesmo. No banco de teste executei um rebuild nos índicesdas tabelas envolvidas na query e o resultado não alterou. 


    Jerfeson S Barbosa


    segunda-feira, 18 de janeiro de 2021 18:43
  • Jerfeson,

    Certo, bom, rodar semanalmente eu não sei dizer neste momento por não conhecer o seu ambiente que seja necessário, particularmente falando eu tenho o hábito de fazer este tipo de implementação de forma quinzenal ou mensal.

    Pois bem, seria interessante analisarmos o plano de execução desta query, bem como, entender melhor se realmente este índice esta fazendo o seu papel.

    Vou direcionar alguns questionamentos:

    1 - Além deste índice o que mais existe de índices nas tabelas envolvidas nas query?

    2 - Você chegou a fazer uso do recurso Include Client Statistics dentro do Management Studio para comparar as execuções?

    3 - Você esta executando esta query diretamente no Servidor?

    ----------------------------------------------------------

    Veja se estes links podem te ajudar:

    SQL Server Management Studio: “Include Client Statistics” Button - Brent Ozar Unlimited®

    SQL SERVER - SQL Server Management Studio and Client Statistics - SQL Authority with Pinal Dave

    Client Statistics in SSMS (one of least known) – SQL Baba

    Você esta utilizando algum recurso em seu ambiente similar as estatísticas incrementais ou funções de particionamento?

    Dica do Mês – Conhecendo e aplicando o uso de atualização de estatísticas incrementais | Junior Galvão – MVP – Data Platform (wordpress.com)

    Criando partition function no Microsoft SQL Server – Parte I | Junior Galvão – MVP – Data Platform (wordpress.com)

    Criando partition function no SQL Server – Parte II | Junior Galvão – MVP – Data Platform (wordpress.com)

    Criando partition function no SQL Server – Parte Final | Junior Galvão – MVP – Data Platform (wordpress.com)


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]


    terça-feira, 19 de janeiro de 2021 11:55
  • Grande amigo Galvão, primeiramente agradeço pelas dicas e orientações sempre dadas aqui no Fórum para entendimento do problema ou dúvida. Sempre é um grande aprendizado interagir contigo.  

    Pois bem, seria interessante analisarmos o plano de execução desta query, bem como, entender melhor se realmente este índice esta fazendo o seu papel. Neste ambiente em especifico mantenho como semanal, pois é um ambiente muito transacional e ao mesmo tempo no setor de faturamento o uso de relatórios gerenciais é muito intenso. 

    Vou direcionar alguns questionamentos:

    1 - Além deste índice o que mais existe de índices nas tabelas envolvidas nas query?

    Estou enviando no link o execution plan da consulta: Exec Plan

    CREATE NONCLUSTERED INDEX [idx_nfl_serie_num] ON [dbo].[NFL]
    (
    	[NFL_SERIE] ASC,
    	[NFL_NUM] ASC
    )
    INCLUDE([nfl_rps_serie],[nfl_rps_numero]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    
    CREATE NONCLUSTERED INDEX [idx_cnv_2] ON [dbo].[cnv]
    (
    	[cnv_cod] ASC,
    	[cnv_nome] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    
    CREATE NONCLUSTERED INDEX [idx_cnv_4] ON [dbo].[cnv]
    (
    	[cnv_caixa_fatura] ASC,
    	[cnv_emp_cod] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    
    CREATE NONCLUSTERED INDEX [idx_str_5] ON [dbo].[str]
    (
    	[str_cod] ASC,
    	[str_nome] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    
    CREATE NONCLUSTERED INDEX [idx_emp_6] ON [dbo].[emp]
    (
    	[emp_cod] ASC,
    	[emp_nome_fantasia] ASC
    )
    INCLUDE([emp_cnv_cod],[emp_raz_soc],[EMP_CR_MODELO_IMPORT]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO
    
    CREATE NONCLUSTERED INDEX [idx_nfs_nfl] ON [dbo].[nfs]
    (
    	[nfs_dt_vcto] ASC,
    	[nfs_str_cod] ASC,
    	[nfs_emp_cod] ASC,
    	[nfs_emp_codigo] ASC,
    	[nfs_serie] ASC,
    	[nfs_status] ASC,
    	[nfs_tipo] ASC,
    	[nfs_nfl_serie] ASC,
    	[nfs_nfl_num] ASC,
    	[nfs_dt_emis] ASC,
    	[nfs_numero] ASC
    )
    INCLUDE([nfs_perc_iss],[nfs_perc_ir],[nfs_vlr_iss],[nfs_vlr_ir],[nfs_valor],[nfs_perc_multa],[nfs_perc_juro],[nfs_desconto],[nfs_vlr_multa],[nfs_nde_serie],[nfs_nde_tipo],[nfs_nde_num],[nfs_usr_login],[NFS_DT_ENVIO],[NFS_DT_RECEB],[NFS_REMESSA],[NFS_VLR_OUTROS_IMP],[NFS_FLUXO_CAIXA],[NFS_IND_TIPO_FATURA],[NFS_COFINS_RET],[NFS_CSSL_RET],[NFS_IR_RET],[NFS_ISS_RET],[NFS_PIS_RET],[NFS_VLR_COFINS],[NFS_VLR_CSSL],[NFS_VLR_PIS]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = ON, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
    GO

    2 - Você chegou a fazer uso do recurso Include Client Statistics dentro do Management Studio para comparar as execuções? Não fiz a comparação. Segue resultado da Statistics client

    3 - Você esta executando esta query diretamente no Servidor? Executando direto no servidor de banco.

    Você esta utilizando algum recurso em seu ambiente similar as estatísticas incrementais ou funções de particionamento? Não.


    Jerfeson S Barbosa


    quinta-feira, 21 de janeiro de 2021 14:47
  • Jerfeson,

    Obrigado por suas palavras, gosto de ajudar, pois assim também estou aprendendo.

    Quero propor uma sugestão, desative todos estes índices existentes na sua tabela, depois repita novamente a execução e anote os valores retornado pelo SQL Server, logo na sequência ative um índice e execute, ative o outro e execute, e assim até o último.

    Durante o processo de execução e ativação de cada índice anote os resultados, pelas comparações que você esta apresentando e pelo plano de execução, sinto que algum dos índices estão na verdade deixando de serem necessários ou até mesmo utilizados, não estou afirmando é um sentimento.

    Se quiser podemos depois analisar através de algumas querys, quais são os índices que podem estar sendo desnecessários ou estão apresentando problemas.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sexta-feira, 22 de janeiro de 2021 12:29
  • Galvão, desativei todos os índices como sugeriu e me deparei com uma cenário onde alguns ínidces não se valia tão necessário de serem usados, principalmente observando as estatísticas de IO. Abaixo mostra os resultados encontrados antes e depois. Iniciei reabilitando os índices das tabelas que estavam consumindo mais leituras NFS e  NFX. As demais tabelas não ativei o índice, pois não vi benefícios em mantê-los. Substituir o índice idx_nfs_nfl da tabela NFS pelo nfs_dt_vcto_idx já existente. Com isso eliminei uma carga a menos para o otimizador do SQL Server.

    ANTES: Ativos todos os índices

    ANTES
    SQL Server parse and compile time: 
       CPU time = 69 ms, elapsed time = 69 ms.
    (594 rows affected)
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'NFL'. Scan count 0, logical reads 243, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfs'. Scan count 1, logical reads 465, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'emp'. Scan count 1, logical reads 151, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'cnv'. Scan count 2, logical reads 14, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'str'. Scan count 1, logical reads 9, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfx'. Scan count 1, logical reads 2961, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    (1 row affected)
     SQL Server Execution Times:
       CPU time = 188 ms,  elapsed time = 420 ms.
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.

    DEPOIS 1 - Desabilitado todos os índices

    SQL Server parse and compile time: 
       CPU time = 70 ms, elapsed time = 70 ms.
    (594 rows affected)
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'NFL'. Scan count 0, logical reads 243, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfs'. Scan count 2, logical reads 2487, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'emp'. Scan count 1, logical reads 155, physical reads 0, read-ahead reads 58, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'cnv'. Scan count 2, logical reads 22, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'str'. Scan count 1, logical reads 10, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfx'. Scan count 1, logical reads 4151, physical reads 0, read-ahead reads 3388, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    (1 row affected)
     SQL Server Execution Times:
       CPU time = 218 ms,  elapsed time = 541 ms.
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.

    DEPOIS 2 - Reabilitado somente os índices da NFX e NFS
    SQL Server parse and compile time: 
       CPU time = 62 ms, elapsed time = 68 ms.

    (595 rows affected)
    Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'NFL'. Scan count 0, logical reads 243, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfs'. Scan count 1, logical reads 346, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'emp'. Scan count 1, logical reads 155, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'cnv'. Scan count 2, logical reads 22, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'str'. Scan count 1, logical reads 10, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    Table 'nfx'. Scan count 1, logical reads 2958, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
    (1 row affected)
     SQL Server Execution Times:
       CPU time = 188 ms,  elapsed time = 413 ms.
     SQL Server Execution Times:
       CPU time = 0 ms,  elapsed time = 0 ms.

    Se quiser podemos depois analisar através de algumas querys, quais são os índices que podem estar sendo desnecessários ou estão apresentando problemas. Tenho total interesse em compreender mais esse quesito, pois é algo que gosto de estudar. Se não lhe incomodar.



    Jerfeson S Barbosa


    sexta-feira, 22 de janeiro de 2021 20:20
  • Jerfeson,

    Ok, que bom que de alguma forma conseguimos evoluir neste cenário.

    Agora como esta o processamento e consumo de memória do seu ambiente.

    Em relação a compreensão e análise podemos fazer isso sim.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 25 de janeiro de 2021 12:07
  • Grande Galvão, o resultado do SELECT no plano ainda apresenta a enigmática mensagem de atenção: The query memory grant detected "ExcessiveGrant", which may impact the reliability. Grant size: Initial 12656 KB, Final 12656 KB, Used 456 KB." O servidor é parrudo, com 200 GB de ram e discos SSD. Houve uma melhora no consumo dos recursos de CPU e memória, mas porque ainda persiste a mensagem no operador?

    Se quiser podemos depois analisar através de algumas querys, quais são os índices que podem estar sendo desnecessários ou estão apresentando problemas. Quando poderia?


    Jerfeson S Barbosa



    segunda-feira, 25 de janeiro de 2021 15:13