Pular para o conteúdo
← Voltar ao overview do Cosmos DB
Flagship · Cross-DB
ÚNICO — só no NoSqlStudio
Ctrl+Alt+Shift+Q

Query Regressions

Cada query recebe um fingerprint estável (estilo sql_id do Oracle) que sobrevive à troca de valores literais — então "a mesma query" continua sendo uma linha só mesmo quando os valores do filtro mudam. O NoSqlStudio aprende um baseline por fingerprint (EWMA/MAD), observa o stream ao vivo na instância inteira e, no instante em que uma query regride, explica POR QUÊ em cinco níveis — das métricas antes/depois até uma narrativa de causa-raiz por IA. É o único IDE que faz isso no MongoDB, Azure Cosmos DB (Mongo API) e AWS DocumentDB igualmente.

Onde ele fica no app: Monitoring ▾ → Query Regressions

Por que o DBA precisa de Query Regressions

Um slow-query log diz que um comando foi lento. Ele nunca diz qual query, se sempre foi assim, o que mudou, nem se importa — então o DBA acaba garimpando log às 2h, correlacionando na mão, chutando. O Query Regressions existe para acabar com isso.

Ele dá a cada query uma identidade estável (um fingerprint que sobrevive à troca de valores), aprende como é o "normal" de cada uma e observa a instância inteira ao vivo. A pergunta deixa de ser "tem algo lento?" e vira "esta query exata ficou 74× mais lenta, este é o plano que mudou, e um índice foi derrubado dois minutos antes".

Isso importa porque os incidentes caros são os silenciosos: um índice derrubado numa janela de manutenção, um deploy que mudou o shape da query, crescimento de dados que cruzou um limite sem avisar, uma fatura do Cosmos que dobrou. Nenhum deles te alerta — até o cliente alertar. Isto pega no instante em que regridem e aponta a causa, no MongoDB, Cosmos e DocumentDB igualmente.

E respeita a realidade do DBA: sua máquina não é um servidor. Você arma o monitoramento no escopo e na janela que escolher; os alertas chegam no Slack, Discord, Teams ou no SO; o histórico sobrevive a restart; e a IA escreve o resumo de causa-raiz que você montaria na mão. Menos garimpo de log, MTTR menor, menos surpresa às 2h.

O que ele faz

  • Fingerprint estável estilo sql_id por shape de query — queryHash nativo no MongoDB, shape-hash client-side no Cosmos/DocumentDB — então a query mantém uma identidade só mesmo com valores diferentes.
  • Cross-engine por design: MongoDB / Atlas, Azure Cosmos DB (Mongo API) e AWS DocumentDB — a única ferramenta que dá RCA de regressão nos três.
  • Captura ao vivo instance-wide: vê as queries de TODOS os clientes, então pega a mudança não-declarada feita numa janela de manutenção — não só as queries que você roda.
  • Causa-raiz em 5 níveis: (1) métricas antes/depois, (2) diff do plano de execução, (3) sondas de índice / cardinalidade, (4) eventos de DDL & deploy correlacionados em ±5 min, (5) narrativa de IA com o seu próprio LLM.
  • Classifica a causa: mudança de plano, colapso de seletividade, crescimento de dados, pico de RU, ou um collection scan lento nunca visto.
  • Métrica por engine: latência p95 no MongoDB / DocumentDB, RU no Cosmos.
  • Monitoramento dirigido pelo DBA: você arma na tela (instância inteira ou bancos escolhidos, com agendamento opcional); roda como job no Job Manager com bolinha de gravação ao vivo — sua máquina não é um servidor.
  • Alerta em regressões confirmadas: notificação nativa do SO + webhook (Slack, Discord e Microsoft Teams auto-detectados pela URL), com intervalo de re-alerta que você define em segundos.
  • Tudo persiste: baselines aprendidos e o histórico de alertas sobrevivem a restart (arquivo + mirror MongoDB), então uma regressão pega de madrugada continua lá de manhã — filtra por período, marca lido/não-lido, exclui.
  • Remediação em um clique: limpa o plan cache numa mudança de plano, reconhece, adia (snooze), ou abre o explain plan.

Passo a passo

  1. 1

    Abra Monitoring ▾ → Query Regressions

    A aba abre com os alertas que já dispararam para esta conexão, agrupados por banco. Nada a configurar para ver o histórico.

  2. 2

    Arme o monitoramento no escopo que importa

    Clique Start e escolha a instância inteira ou bancos específicos, opcionalmente com agendamento início/fim. Registra como job no Job Manager e segue rodando independente da aba.

  3. 3

    Exemplo — uma "new slow query"

    Um collection scan nunca-visto sobre muitos docs é sinalizado na hora, sem precisar de baseline. Filtro em campo sem índice é o caso clássico:

    // campo sem índice -> COLLSCAN na coleção inteira
    db.orders.find({ promoCode: "BLACKFRIDAY" })
    
    // → card: New slow query — shop.orders
    //   plano: COLLSCAN  ·  docs examinados 1.550.000  ·  p95 642 ms  ·  WARN
  4. 4

    Exemplo — uma regressão de baseline

    Uma query que era barata contra o baseline aprendido passa a custar muito mais. Mesmo fingerprint, só o plano/custo mudou — ex.: um índice foi derrubado e o IXSCAN virou COLLSCAN:

    // mesma query, mesmo fingerprint — só o plano mudou
    baseline (35 amostras):  IXSCAN { userId:1, status:1 }   p95   2.5 ms
    agora:                   COLLSCAN                        p95 185.0 ms
    
    // → card: Plan regression — shop.orders
    //   delta 74x  ·  causa: plan-change  ·  CRITICAL
    //   o que mudou perto: dropIndex idx_user_status (2 min antes)
  5. 5

    Leia o card + rode a causa-raiz por IA (Nível 5)

    Severidade, o fingerprint, Baseline → Agora para latência e docs examinados, o diff do plano, o shape da query e o que mudou por perto. Aí rode a análise Nível 5 com o seu LLM — ela lê só o fact sheet e termina com a causa mais provável + um score de confiança.

  6. 6

    Corrija, e seja alertado na próxima

    Limpe o plan cache ou crie o índice; configure o alerta SO + Slack/Discord/Teams uma vez em Settings ▸ Alerting para a próxima regressão te alcançar onde você estiver.

Casos de uso reais

A regressão silenciosa

Um job noturno derrubou um índice. Às 2h um find() virou IXSCAN → COLLSCAN numa coleção de 1,5M docs. O card disparou com o diff de plano e o evento dropIndex correlacionado 2 min antes — causa-raiz numa tela só, sem garimpar log.

Pegue um deploy ruim

Um release mudou o shape da query e ela deixou de usar o índice composto. A regressão confirmou em minutos e a timeline de Nível 4 apontou o marcador de deploy — rollback antes do on-call ser paginado.

Pico de fatura no Cosmos

O custo em RU de uma query triplicou após um colapso de seletividade. O RU antes/depois mais a narrativa de IA deram o fix de partição/índice antes do fechamento da fatura.

Mudança não-declarada numa janela de manutenção

A captura instance-wide sinalizou uma regressão num banco que não fazia parte da mudança planejada — o banner de fora-de-escopo trouxe à tona antes de virar incidente.

Triagem pelo celular

Regressões confirmadas vão pro Slack / Discord / Teams com o namespace e o delta; o intervalo de re-alerta segue lembrando enquanto está quebrado, e silencia quando corrige.

FAQ

Como isso é diferente de um slow-query log?

Um slow log te dá linhas isoladas. O Query Regressions dá identidade estável por query, baseline aprendido, a causa classificada em cinco níveis, correlação com DDL/deploys, narrativa de IA — mais alerta e histórico. Ele diz o que mudou, não só que algo ficou lento.

Funciona mesmo no Cosmos DB e no DocumentDB?

Sim — é justamente o ponto. MongoDB lê o slow log, Cosmos lê os diagnostic logs do Azure (RU como métrica), DocumentDB lê o profiler no CloudWatch. Mesmo modelo de fingerprint + RCA nos três.

Preciso manter o app aberto?

O monitoramento roda enquanto o NoSqlStudio está aberto (com a aba aberta ou não) e sobrevive a restart recarregando os baselines persistidos. Um agente headless 24/7 é um produto à parte no roadmap.

Para onde vão os alertas?

Uma notificação nativa do SO mais um webhook opcional. Uma URL serve para Slack, Discord ou Microsoft Teams — o payload é adaptado ao provedor. O intervalo de re-alerta (em segundos) controla com que frequência uma query ainda-regredida re-notifica.

O que o passo de IA envia para o LLM?

Só um fact sheet compacto (métricas antes/depois, diff de plano, achados de índice, cardinalidade, shape da query). Você traz o seu provedor/chave via AI Registry; nada sai até você rodar a análise.

Pronto para ver isso na sua conta Cosmos?Baixar NoSqlStudioPróximo → Operations Center