Ajude o site desativando o bloqueador de anúncio
Cabeçalho

ADVPL e SQLServer vs Desempenho

Autor: Eurai Criado: 16/09/2023 Atualizado: 15/11/2025 ADVPL
Postagem

 

Informações Úteis sobre SQL Server (Microsoft)

Olá, tudo bem? 👋

Abaixo segue uma coletânea de comandos, diagnósticos e boas práticas relacionadas ao SQL Server, Windows e ADVPL.


📊 Estatísticas do SQL Server

SET STATISTICS IO ON
SET STATISTICS IO OFF

SET STATISTICS TIME ON
SET STATISTICS TIME OFF

SET STATISTICS IO,TIME ON
SET STATISTICS IO,TIME OFF

🛡️ Anti-vírus

  • Desabilitar durante a instalação do Protheus
  • Extensões a considerar:
    • .MDF
    • .NDF
    • .LDF
    • .BAK
    • .TRN

🗄️ SQL Server / Banco de Dados

  • Versão do SQL Server
    SELECT @@VERSION AS VERSION
  • Collation do Banco
    SELECT DATABASEPROPERTYEX('UDESENV_12_1_25','Collation')
  • Collation da Instalação
    SELECT SERVERPROPERTY(N'Collation')
  • Teste de Collation para performance (LIKE)
    WHERE HISTORICO COLLATE Latin1_General_BIN LIKE '%Eurai%'
    -- ou
    WHERE HISTORICO COLLATE SQL_Latin1_general_CP1_CI_AI LIKE '%Eurai%'
    

    Enviado por: Fabricio Lima – Power Tuning

  • Exemplo de INNER JOIN com Collation
    SELECT F3_NFISCAL, RIGHT(RTRIM(SP51.NFSE_ID),6), NFSE_ID, *
    FROM DATA_SPED.dbo.SPED051 SP51
    INNER JOIN SF3000 SF3 
      ON LEFT(SP51.NFSE_ID,3)  COLLATE Latin1_General_BIN2 = SF3.F3_SERIE
     AND RIGHT(RTRIM(SP51.NFSE_ID),6) COLLATE Latin1_General_BIN2 = SF3.F3_NFISCAL
    WHERE SP51.ID_ENT = 'XXXXXX'
      AND SP51.D_E_L_E_T_ = ''
      AND SP51.NFSE = 'XX22'
    
  • WhoIsActive – Monitoramento
    • Download oficial
    • Permite monitorar e investigar consultas lentas.
    • dbAccess também permite rastrear.
  • TempDB – Boas Práticas
    • Problemas de PAGELATCH no monitoramento
    • Recomendado: até 8 arquivos
    • Tamanho inicial: 1 GB
    • Crescimento: 800 MB
  • Build Numbers SQL Server
  • Max Degree of Parallelism
    • Recomendado: metade dos processadores lógicos (máx. 8)
  • Cost Threshold for Parallelism
    • Sugestão: entre 25 e 50 (padrão recomendado: 35)
  • Rotação do ErrorLog
    EXEC sp_cycle_errorlog
    • Recomendação: manter 20 arquivos
  • Instant File Initialization (IFI)
    • Evita formatação completa do .MDF
    • Abrir: secpol.msc
    • Local Security Policy → User Rights Assignment → Perform volume maintenance tasks
    • Adicionar: NT Service\MSSQLServer
    • Necessário reiniciar o serviço SQL Server
  • Check Mail – Log de envio
    SELECT TOP 10 sent_status, * 
    FROM msdb.dbo.sysmail_unsentitems 
    ORDER BY send_request_date DESC;
    
    SELECT TOP 10 sent_status, * 
    FROM msdb.dbo.sysmail_mailitems 
    ORDER BY send_request_date DESC;
    
  • Configurações adicionais
    • User sysadmin → dba
    • Page verify: Checksum
    • AutoClose = OFF
    • AutoShrink = OFF

📧 Testar Envio de E-mail (T-SQL)

EXEC msdb.dbo.sp_send_dbmail
  @profile_name = 'test',
  @recipients   = '[email protected];[email protected];',
  @subject      = 'WWW',
  @body         = 'abc',
  @body_format  = 'HTML';

🪟 Windows – Boas Práticas

  • Desfragmentação automática
  • SO virtualizado
  • Modo de energia: Alto Desempenho

💻 ADVPL – Funções Úteis

  • FWFileReader – leitura de arquivos
  • FWFileWriter – gravação de arquivos
  • FWBulk – inserção em massa
  • tXMLManager – parser XML (case-sensitive)
  • Conversão Array / Hash → JsonObject
  • FWExecCachedQuery – cache de consultas
  • FWPreparementStatement
  • MPSysOpenQuery()
  • FWExecStatement – nativo + proteção contra SQL Injection
  • MpSysExecScalar – retorna somente 1 valor

🌐 REST – Instances

  • Instances = inicial, máximo, mínimo livre, incremento
  • Exemplo 1:
    Instances = 1,10,1,1

    Inicia com 1 thread, máximo 10, tenta manter sempre 1 livre.

  • Exemplo 2:
    Instances = 1,20,2,5

    Inicia com 1 thread, máximo 20, tenta manter 2 livres e sobe 5 por vez.


⚙️ Instant File Initialization – Verificar Status

SELECT servicename, instant_file_initialization_enabled
FROM sys.dm_server_services
WHERE servicename LIKE 'SQL Server (%';

🚀 Migração 2210 – Pontos Importantes

  • Profile causando lentidão – recriar do zero ajudou.
  • Funções com COUNT padrão — ajustar melhora performance.
  • ExecAutos lentos:
    • Pode ter relação com CTBLoadCQD
    • Verificar compartilhamentos das tabelas contábeis
    • Documentação TOTVS

🤝 Finalização

Gostou do conteúdo? Compartilhe com seus amigos e deixe um comentário! 😎

Um abraço e até a próxima!

 

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL