Banco de Dados

26 set, 2017

LinkedIn desenvolve ferramenta de análise Query MySQL

Publicidade

Para otimizar o desempenho de suas instâncias MySQL, o LinkedIn criou uma ferramenta de análise Query para analisar e ajustar queries caras. Ele é executado na camada de rede, armazena tudo dentro de um servidor centralizado e fornece uma interface para usuários analisarem métricas.

O LinkedIn roda uma arquitetura MySQL multi-inquilino. Isto se dá principalmente devido ao fato haver mais de 500 aplicativos que dependem dele, o que significa que o arrendamento único causaria custos de recursos extremamente elevados. O trade-off para esta abordagem significa que as consultas de um aplicativo podem prejudicar o desempenho para outro, e é por isso que é importante para eles serem capazes de compreendê-los e otimizá-los o máximo possível.

O analisador Query é dividido em três componentes:

  1. Agentes Query: Funciona no node MySQL e coleta métricas sobre como executar queries e seu desempenho.
  2. Servidor Centralizado: Onde todos os dados sobre consultas são armazenados para relatórios.
  3. UI: Fica no topo do servidor e fornece um meio fácil de usar para analisar os dados.

Karthik Apigatla, engenheiro sênior do banco de dados no LinkedIn, destaca seus benefícios como:

“…permitindo que nossos engenheiros do banco de dados identifiquem queries problemáticas de uma só vez para comparar uma sobreposição semana a semana da atividade de consulta e para solucionar problemas de desaceleração da base de dados de forma rápida e eficiente.”

Originalmente, foram consideradas soluções fora da caixa, como o MySQL Performance Schema e o log query lento, mas eles vieram com muitos problemas de desempenho. Ao contrário dessas ferramentas, o Query Analyzer é executado nas camadas de rede, minimizando qualquer tipo de perda de desempenho nas instâncias.

O agente captura pacotes query sem modificações e reconstrói o query usando os protocolos MySQL e, em seguida, calcula os tempos de resposta com base em uma diferença de tempo entre quando os pacotes entram pela primeira vez na porta e quando são produzidos pela resposta do banco de dados.

A interface de usuário fornece uma visão tabular de queries distintos para hosts, permitindo que o usuário filtre por períodos de tempo. Queries individuais também podem ser selecionadas, fornecendo gráficos e outras métricas úteis, como carregamento e tempo médio.

A ferramenta também fornece uma métrica de carregamento query que é calculada como ‘tempo de execução * número de execuções’. Ao tomar isso e convertê-lo em uma proporção, ele pode ser comparado com outras queries para ver quais obtiveram a maior porcentagem de carga. Por exemplo, mesmo se um query demorar alguns milissegundos, a métrica ainda seria correta se estiver executando muitas vezes, além de levar a maioria do carregamento.

O LinkedIn não definiu uma linha de tempo específica, mas pretende abrir a ferramenta em um futuro próximo.

***

Com informaçõesde InfoQ: https://www.infoq.com/news/2017/09/mysql-query-analyzer?