Voltar ao portfólio
EN PT ES
Estudo de caso · BI / Dados

Rodando o Metabase em produção: upgrades, acesso e performance

Um carregamento controlado de dashboard melhorou de cerca de 49.7 segundos para 3.1 segundos após uma mudança de índice de metadados, junto com acesso a dados mais seguro e backups operacionais.

Por Vitor Schiavo Atualizado em outubro de 2026 ~6 min de leitura
A solução em resumoEncontre o gargalo de metadados antes de escalar o banco de dados.
Rastreie o atrasoSepare os metadados das queries de dados
Teste o índiceEnsaie em um clone descartável
Verificação em produçãoRepita o carregamento com rollback pronto

Um carregamento controlado em produção melhorou de ~49.7 s para ~3.1 s; um gargalo separado de filtro no MongoDB permaneceu.

Contribuição em resumo

Minha responsabilidade
Upgrades, acesso read-only ao banco de dados e diagnóstico de performance de queries de metadados.
Escopo
Operações de BI e uma medição controlada de carregamento de dashboard em produção.
Colaboração & limites
Isolei gargalos de infraestrutura e de metadados; um gargalo separado de filtro no MongoDB permaneceu fora da correção medida.
Resultado
O carregamento controlado de dashboard melhorou de ~49.7 s para ~3.1 s; isto não é uma garantia universal de performance de dashboards.

Uma ferramenta de BI acumula risco silenciosamente. Ela detém credenciais poderosas de banco de dados, seus dashboards ficam mais lentos conforme os dados crescem, e sua versão fica para trás até que um upgrade pareça assustador. Tratei a saúde do Metabase como três tarefas contínuas: manter-se atualizado, manter o menor privilégio e manter as queries rápidas.

Mantenha-se atualizado, ambiente por ambiente

Mantive o Metabase em versões suportadas em vez de deixá-lo apodrecer, fazendo upgrade por várias releases minor entre os ambientes e planejando cada salto em vez de pular às cegas. Rotina, mas é a rotina que impede que um upgrade de um dia vire um de uma semana.

Menor privilégio: uma ferramenta de BI só deveria ler

O Metabase se conecta aos bancos de dados que visualiza, e é tentador dar a ele um usuário amplo porque isso "simplesmente funciona". Esse usuário amplo também é um risco permanente: uma ferramenta de relatórios com acesso de escrita aos dados de origem é um incidente esperando para acontecer. Substituí os usuários amplos de banco de dados por um usuário read-only dedicado, para que a camada de BI possa consultar tudo de que precisa e não altere nada. Uma ferramenta de visualização não tem por que conseguir escrever.

Mantenha a produção fora do raio de impacto

Queries analíticas pesadas e tráfego de produção ao vivo não pertencem ao mesmo node de banco de dados. Mapeei toda fonte de dados que o Metabase estava lendo e encontrei queries caindo no primário, competindo com a aplicação. Em vez disso, roteei essas leituras para uma réplica de analytics dedicada, para reduzir a contenção com o workload do produto.

Encontre o gargalo de metadados

Uma investigação de dashboard lento mostrou que cada card passava boa parte do tempo buscando metadados no próprio banco de dados de aplicação do Metabase, antes de consultar os dados de origem. Campos de origem dinâmicos tinham acumulado uma grande tabela de metadados; o índice existente não correspondia ao filtro de tabela e status ativo.

Reproduzi o SQL exato em um clone descartável, comparei carregamentos sequenciais e concorrentes, e ensaiei a criação do índice e o rollback. Em produção, fiz um backup novo, esperei as queries ativas se encerrarem e adicionei um índice composto com um lock timeout explícito e DDL online.

Medições controladas em produção, um carregamento antes e depois
SinalAntesDepois
SQL de metadados, EXPLAIN ANALYZE4,356 ms8.2 ms
Oito cards, cada um35.7–37.1 s1.15–1.62 s
Aba inteira do dashboard~49.7 s~3.1 s

A criação do índice levou cerca de 29 segundos, com zero esperas por lock de metadados naquela execução. Estas são medições controladas de antes/depois, não uma distribuição de latency para todos os usuários do dashboard. Um scan separado de filtro no MongoDB permaneceu como um gargalo diferente, e o 524 originalmente reportado não teve uma causa comprovada.

O acompanhamento confirmou um backup diário automatizado bem-sucedido, com sete pontos de recuperação retidos. Recursos temporários de clone e backups sob demanda aprovados foram removidos. O índice foi adicionado ao checklist de upgrade porque fica fora das próprias migrations do Metabase e precisa ser verificado após um upgrade ou restore.

Além disso: confie nos dados, não só na ferramenta

Uma tarefa separada, mas relacionada, é a atualidade dos dados. Quando um dashboard parou de atualizar silenciosamente para uma integração downstream, a ferramenta parecia bem; os dados tinham ficado obsoletos no upstream. Operar bem uma plataforma de BI significa observar o pipeline que a alimenta, não apenas o serviço em si, porque um dashboard confiantemente errado é pior do que um quebrado.

O que eu diria a quem está operando uma ferramenta de BI

Decisões e próximos passos

Uma visão retrospectiva da abordagem e seus limites. A próxima melhoria é uma proposta, não um resultado entregue.

Alternativa e justificativa

Adicionar capacidade ao banco de dados é uma opção; fazer profiling primeiro expôs um padrão de acesso a metadados que podia ser resolvido com um índice.

Trade-off

Mudanças de índice exigem um backup, um ensaio descartável e um plano de rollback. A latency de metadados e a de queries de origem são gargalos diferentes.

O que eu melhoraria em seguida

Próxima melhoria: repetir testes de dashboard representativos ao longo do tempo e tratar separadamente o gargalo remanescente de queries de origem.