Ir para o conteúdo
  • Empresa
    • SOBRE NÓS
    • TRABALHE CONOSCO
  • Soluções
    CONSULTORIA CLOUD
    • GET STARTED
    • DESIGN
    • IMPLANTAÇÃO
    MIGRAÇÃO
    SQUAD AS A SERVICE
    WELL ARCHITECTED
    SEGURANÇA E COMPLIANCE
    • ASSESSMENT DE VULNERABILIDADE
    • CENTRO DE OPERAÇÕES DE SEGURANÇA (SOC)
    • ASSESSMENT LGPD
    • UTM - GERENCIAMENTO UNIFICADO DE AMEAÇAS
    BIG DATA & MACHINE LEARNING
    • Analytics
    • AI/ML
    SERVIÇOS GERENCIADOS
    • MONITORAMENTO E SUPORTE 24X7
    • DAREDE MSP
    • GERENCIAMENTO DEVOPS
    • GERENCIAMENTO DEVSECOPS
    • GERENCIAMENTO FINOPS
    • GERENCIAMENTO DE BANCO DE DADOS
    • GERENCIAMENTO DE PABX IP
    • LICENCIAMENTO DE SOFTWARE
    COMPETÊNCIAS AWS
    • AWS CLOUD FRONT
    • AWS AURORA
    • AMAZON RDS
    • DEVOPS
    • MICROSOFT WORKLOADS
    • MIGRATION
    • PUBLIC SECTOR
    • PUBLIC SECTOR NPO
    • PUBLIC SECTOR EDUCATION
    • WELL ARCHITECTED
    • VMWARE CLOUD ON AWS
    • API GATEWAY
    • LAMBDA
    • NETWORKING ON AWS
    • FINANCIAL SERVICES
  • Cases
  • Blog
Darede Portugal
  • Fale Conosco
  • Canal Compliance
  • Seja Parceiro Autorizado
A métrica Worktables from Cache Ratio pode esconder problemas de desempenho no servidor. Ignorar outras métricas pode levar a decisões erradas. Confira os detalhes!

Autor: Éverton Trindade

Data 29/01/2025

Olá, pessoal!

Hoje resolvi abordar um tema pouco falado, depois de ter me deparado com uma situação inusitada sobre o assunto.

Muitos ambientes utilizam o Zabbix como ferramenta de monitoramento de atividade e desempenho, especialmente para bancos de dados. No entanto, nem sempre estamos familiarizados com as flags ou métricas coletadas por essa ferramenta.

A flag do Zabbix que abordarei aqui é o “Worktables from cache ratio”. Sim, há quem utilize essa métrica como um “medidor de desempenho” de um banco de dados. Meu objetivo aqui é garantir que, ao receber um alerta desse tipo, você entenda que a situação já estava crítica há algum tempo. Ou que, pelo menos, uma cortina de fumaça já vinha se alastrando.

Mas, para compreender melhor a situação, precisamos primeiro entender o que são esses Worktables e para que servem. Para isso, investi um bom tempo (mais de 30 horas) realizando testes, coletas e pesquisas.

E, para enriquecer ainda mais a discussão, convido você a compartilhar experiências sobre o assunto, caso já tenha se deparado com alertas desse tipo.

Quando e onde os Worktables são construídos?

Na maioria das vezes, o SQL Server executa operações lógicas para processar consultas e, para isso, constrói os Worktables no TempDB. Esses objetos temporários (não confundir com #tempTables) estão associados ao uso de cursores e a consultas que envolvem cláusulas como DISTINCT, CROSS JOIN, ORDER BY, GROUP BY, entre outras. Todas essas operações são executadas a nível de TempDB.

Para desmistificar ainda mais o assunto, os Worktables também são chamados de Table Spool. O otimizador de consulta os implementa como tabelas ocultas no TempDB. Ele utiliza esses objetos quando julga necessário armazenar temporariamente os dados para posterior reutilização, evitando acessos repetitivos a uma mesma tabela e reduzindo a necessidade de buscas ou varreduras (seeks and scans).

Ainda tem dúvidas? Confira a consulta abaixo e seu respectivo plano de execução:

Criação da tabela Worktable pelo otimizador

                                                                                   Criação da tabela Worktable pelo otimizador

Table Spool relacionado ao Worktable

                                                                                     Table Spool relacionado ao Worktable

E assim confirmamos que as Worktables são um processo interno realizado pela própria engine, já que a tabela em si não existe fisicamente no banco de dados:

A tabela realmente não existe

A tabela realmente
não existe

E por que dos sinais de fumaça?

Por três motivos:  

  1. O uso intenso e significativo dessas atividades pode indicar uma possível contenção a nível de disco.  
  2. O TempDB pode estar mal configurado, mal distribuído ou apresentar problemas no disco onde os datafiles estão localizados (baixo desempenho ou partição inadequada).  
  3. Pouca memória disponível no servidor.

Não irei estender este artigo abordando todos os motivos especificados acima, mas abordarei ao menos o item de número três (3): Insufficient memory.

Mas calma, isso não significa que o item escolhido seja o mais importante, nada disso. Muito pelo contrário, os demais itens precisam ser levados em consideração em análise de performance também.

Acontece que podemos nos deparar com situações em que uma pressão de memória no servidor pode ser ignorada enquanto “aguardamos” por alertas relacionado ao “Worktables from cache ratio”.

O fato das Worktables serem armazenadas em cache é o que faz com que a próxima execução de uma mesma consulta seja mais rápida. Mas quando um servidor tem pouca memória, um plano de execução pode ser removido do cache e todas as Worktables associadas também são descartadas.

E para demonstrar esse tipo de situação fiz questão de criar, propositadamente, uma tabela com mais de 3 milhões de registros sem índice algum (isso mesmo, nem mesmo PK) em meu ambiente de teste. E para piorar ainda mais a situação, configurei para que o SQL Server utilize apenas 1GB de memória do meu desktop.

Resultado: A tabela que criei não pode ser alocada por completo na memória. E o que isso significa? Haverá muitas trocas de páginas (consulta em disco). Criação do banco e da tabela, ambos denominado Worktables:


Detalhes da tabela criada recentemente

Detalhes da tabela
criada recentemente

Para ser justo, aproveitamos para limpar todo o cache do servidor:

Não faça isso em ambiente de produção!

Não faça isso em
ambiente de produção!

Para tornar a análise ainda mais precisa, configurei um coletor no S.O. para registrar e acompanhar o comportamento das métricas especificadas. Vejam só:

SQL Server configurado para utilizar apenas 1GB de RAM

SQL Server
configurado para utilizar apenas 1GB de RAM

Memória livre disponível

Memória livre
disponível

Métrica relacionado ao Worktable From Cache Ratio

Métrica relacionado

ao Worktable From Cache Ratio

Métrica relacionado ao PLE (Page Life Expected)

Métrica relacionado
ao PLE (Page Life Expected)

Agora observe o comportamento do gráfico assim que realizamos uma consulta completa na tabela Worktables (full scan):

Percebemos uma queda abrupta do PLE e alocação de toda memória livre pelo SQL Server

Percebemos uma queda
abrupta do PLE e alocação de toda memória livre pelo SQL Server

No decorrer do processo, percebemos que a métrica relacionada ao Worktables From Cache Ratio permanece intacta enquanto a casa está pegando fogo. Prova disso é que as linhas que representam a disponibilidade de memória e o tempo de vida das páginas mal aparecem no gráfico abaixo:

Métrica relacionado ao Worktable From Cache Ratio

Métrica relacionado
ao Worktable From Cache Ratio

O que podemos concluir?

Focar apenas em alertas relacionados ao Worktables e ignorar outras métricas que indicam pressão de memória ou problemas de performance pode levar a decisões equivocadas. Quando se trata de desempenho, é essencial realizar uma análise minuciosa e considerar diferentes contadores.

Por hoje é só, pessoal!

Até a próxima! ?

foto-everton-trindade

Éverton Trindade
Administrador de Banco de Dados

everton.trindade@darede.com.br

Éverton Trindade é Administrador de Banco de Dados Jr na Darede, com especialização em DBA SQL Server e PostgreSQL. Detém certificações Microsoft em Azure Fundamentals, Azure Data Fundamentals, Azure Database Administrator Associate e Azure AI Fundamentals, além de conhecimentos sólidos em Linux System Administration e Linux Network Engineering.

  • #Zabbix #SQLServer #BancoDeDados #Monitoramento #Worktables #DBA #TempDB #QueryOptimization #Performance #TableSpool #SQLPerformance #TechInsights #InfraestruturaTI

OUTRAS PUBLICAÇÕES

6 serviços de cloud para home office

Confira o artigo que traz 6 dicas de serviços de cloud para trabalhar remotamente.

Configurando uma instância com o AWS CPU OPTIONS

Veja como configurar uma instância com o AWS CPU Options! Nosso #cloudspecialist José Anderson Vila Nova preparou um artigo sobre o assunto!

Novidades da Semana 14 a 18 de junho

Todos os dias a AWS lança uma série novidades e atualizações em seus produtos que visam melhorar a vida de seus usuários. Reunimos algumas delas que fazem mais sentido para nosso mercado e que certamente aplicaremos em nosso dia a dia. Confira as novidades das últimas semanas.

DAREDE É RECONHECIDA COMO AWS CONSULTING PARTNER OF THE YEAR – LATAM

Darede é reconhecida como parceira de destaque, impulsionando a inovação com soluções baseadas em AWS.

Novidades da Semana – 17 de dezembro a 14 de janeiro

Os #cloudspecialists da Darede reuniram as principais novidades da semana da AWS! Confira quais são elas e como elas podem te ajudar!

Darede lança uma nova iniciativa para segurança cibernética

A Darede, empresa parceira nível Premier da Amazon Web Services, tem o orgulho de anunciar o lançamento da sua mais recente iniciativa de Segurança Cibernética: a SecOffice. Com uma visão audaciosa e um compromisso inabalável com a proteção digital.

« Anterior Página1 Página2 Página3 Página4 Página5 Página6 Página7 Página8 Página9 Página10 Próxima »
  • Alameda Araguaia, 2044 - Bloco 1 - CJ 210/211
    06455-000 - Alphaville,
    Barueri São Paulo - Brasil
  • +55 11 3900-1010 | 3995-6919
Acesse Darede Portugal
Darede Portugal

Conecte-se conosco

  • E-books
  • Blog

Mais

  • Fale Conosco
  • Canal Compliance
  • Seja Parceiro Autorizado
  • Governança Corporativa

newsletter

  • Política de Privacidade e Cookies
  • Perguntas Frequentes
© Copyright 2025 Darede à nuvem
Todos os direitos reservados | By Damidia Marketing & Conteúdo

Nós usamos cookies para garantir e oferecer a melhor experiência de navegação em nosso site! Mais informações

ACEITAR & FECHAR
RECUSAR