Please enable JavaScript.
Coggle requires JavaScript to display documents.
Databases - Coggle Diagram
Databases
-
-
Key metrics
Query Execution Time Tempo para o banco processar e retornar os resultados da query. Altos tempos indicam problemas com otimização da query, falta de índices e grandes scans no banco. Utilize EXPLAIN e EXPLAIN ANALYZE para medir
Throughput número de transações (R, W e U) processadas por segundo. (TPS). Um baixo throughput em tráfegos altos pode indicar gargalos ou tratamento ineficiente de queries.
Latency tempo que o request gasta para sair do cliente, ser processado e devolver a resposta
Uso de recursos consumo de CPU (medido por query workloads e uso de CPU por sessão/processo), memória (uso de buffer), I/O de disco (leituras/escritas por segundo) e rede (taxa de transferência de dados) pelo banco. Útil para identificar possíveis gargalos.
-
-
Otimizando queries
Tem como objetivo garantir que as queries executem de forma eficiente, consuma o mínimo de recursos e retorne os resultados rapidamente
Analise os planos de execução utilizando EXPLAIN (MySQL) ou EXPLAIN ANALYZE (PostgreSQL). Com isso podemos detectar full table scans (ausência de índices ou queries ruins), index usage para ver se os índices estão sendo utilizados de forma eficaz e a ordem e os tipos dos joins para encontrar loops aninhados ou joins hashs que impactam performance
-
Técnicas de índices para melhorar Performance (ter tipos de índice errados ou falhar na manutenção deles, pode ser tão crítico como não te-los, principalmente em write-heavy workloads)
Índices primários e secundários o índice primário é criado junto com a PK para acelerar buscas, mas pode tornar inserts lentos se a PK for auto-incremental, porque o banco tem que manter a ordem. Já o secundário é criado em colunas não primárias para acelerar as buscas. Mas não determina a ordem das coisas. De qualquer forma também reduz velocidade nas escritas por ter que atualizar os índices e aumenta consumo de espaço
Índice composto que cobrem mais de uma coluna, para otimizar queries com múltiplas condições de filtro. Deve ser criado com cuidado pois a ordem da coluna importa
Manutenção de índices os índices se degradam com o tempo devido a fragmentação, inchaço e mudanças na distribuição dos dados. Sendo necessário manutenções periódicas
-
-
-
-
Atualize sempre as estastísticas dos índices, pois os planos de execução analisam isso para fazer suas decisões de otimização
-
Estratégias de scaling
Vertical CPU e memória (para lidar com mais conexões concorrentes e queries complexas), upgrade de storage (ex. mudar para SSDs para aumentar a capacidade e a performance de IO) e usar instâncias maiores na AWS
Horizontal distribuir a carga do banco entre múltiplos servidores adicionando nós, aumentando escalabilidade e tolerância a falhas. Ex.: shards ou replication