Modelos de Custo Adaptativos para Otimização de Consultas
Uma nova abordagem melhora a execução de consultas em banco de dados com ajustes de custo dinâmicos.
― 7 min ler
Índice
No mundo dos bancos de dados, quando um usuário roda uma consulta, o sistema precisa descobrir a melhor forma de executá-la. Isso envolve escolher um plano dentre várias opções, que às vezes podem chegar a milhares. O método que os otimizadores usam pra escolher esses planos depende muito de um modelo de custo. Basicamente, o objetivo é estimar quanto tempo uma consulta vai levar com base em vários fatores, permitindo que o sistema selecione o plano mais eficiente pra execução.
Um modelo de custo tradicional considera diferentes fatores, especialmente quanto de poder de CPU e espaço em disco vai ser necessário. Esses valores geralmente são definidos por alguém que entende como o banco de dados funciona, mas podem mudar dependendo do comportamento do usuário e da carga de trabalho. Por causa disso, usar um conjunto fixo de valores pode nem sempre levar ao melhor desempenho.
Pra resolver esse desafio, a gente propõe um Modelo de Custo Adaptativo (MCA). Esse modelo monitora continuamente como as consultas são executadas e ajusta os parâmetros de custo em tempo real. Fazendo isso, ele consegue otimizar como os recursos, como CPU e I/O de disco, são usados sem precisar de sempre pedir ajuda de um expert em banco de dados. Essa abordagem permite que o sistema responda a mudanças na demanda, resultando em um desempenho melhor no geral.
Noções Básicas de Otimização de Consultas
Quando um banco de dados processa uma consulta SQL, podem ser criados vários planos de execução praquela consulta, o que dificulta encontrar o que vai rodar mais rápido. Um modelo de custo ajuda fornecendo uma forma de estimar quanto tempo cada plano vai levar. A precisão desse modelo de custo é fundamental porque afeta diretamente qual plano o otimizador escolhe. Se o modelo estiver errado, o otimizador pode escolher um plano que parece bom no papel, mas que roda mal na prática.
Um otimizador típico tem três tarefas principais: estimar quantos registros vão sair de um certo plano, estimar quanto de CPU e recursos de disco serão usados, e então encontrar um plano que minimize esses custos. Porém, os métodos tradicionais podem ter dificuldades, especialmente quando lidam com consultas complexas com múltiplas junções, porque as estimativas de custo podem ser muito imprecisas.
Recentemente, alguns começaram a usar técnicas de aprendizado de máquina pra aprender com as execuções anteriores de consultas. Embora esses métodos possam melhorar o desempenho em certas situações, eles costumam exigir uma carga de trabalho constante ou correm o risco de precisar de um retrabalho completo quando confrontados com dados ou padrões de consulta que mudam.
A ideia principal por trás da nossa abordagem é que, ao ajustar os parâmetros relacionados aos custos de CPU e disco dinamicamente, podemos melhorar a capacidade do otimizador de encontrar os melhores planos.
Problemas com Modelos de Custo Tradicionais
Nos modelos de custo padrão, um administrador de banco de dados define manualmente os parâmetros relacionados aos custos. Isso pode ser complicado, já que encontrar os parâmetros certos depende de um conhecimento profundo do banco e da sua carga de trabalho. Além disso, a eficácia dessas configurações de parâmetros pode diminuir com o tempo, conforme as cargas de trabalho mudam, fazendo com que seja necessário revisar os parâmetros frequentemente.
Um método alternativo envolve rodar um conjunto específico de consultas de calibração pra coletar estatísticas, que são então usadas pra ajustar os parâmetros de custo. No entanto, executar essas consultas de calibração pode ser cansativo e pode não representar com precisão as cargas de trabalho reais.
Nosso modelo de custo adaptativo (MCA) oferece uma solução ao utilizar técnicas de aprendizado de máquina que permitem ajustes automáticos com base nas estatísticas de execução das consultas. Existem dois componentes principais no MCA: um foca nos parâmetros de custo associados ao I/O de disco e o outro nos custos de CPU.
Parâmetros Relacionados ao Disco
O MCA calcula o custo associado ao acesso ao disco levando em consideração o estado do cache de buffer do banco de dados. Quando uma consulta é executada, o MCA verifica quanto dos dados necessários já está na memória e quanto ainda precisa ser buscado no disco. Ao coletar continuamente estatísticas sobre como os dados são usados, o MCA pode fornecer estimativas de custo mais precisas.
Por exemplo, se uma tabela estiver quase toda armazenada no cache de buffer, o modelo pode prever que acessá-la será mais rápido do que se precisar de múltiplas leituras do disco. Essa estimativa dinâmica é importante porque reduz os erros nas previsões de custo do otimizador.
O modelo também usa uma taxa de acerto, que simplesmente indica com que frequência os dados necessários para uma consulta podem ser encontrados na memória em vez de no disco. Ao estimar essa taxa de acerto com base em dados históricos, o MCA ajusta o custo para acesso aleatório ao disco de forma dinâmica.
Parâmetros Relacionados à CPU
Enquanto os padrões de acesso ao disco podem mudar com base no estado do banco de dados, os parâmetros relacionados à CPU permanecem mais constantes. No entanto, eles ainda precisam de ajustes pra refletir com precisão a configuração atual de hardware e as condições do banco de dados.
Depois de executar uma consulta, o MCA coleta estatísticas sobre quanto tempo várias operações levam e quantos registros são processados para cada operação. Comparando esse tempo de execução real com o custo esperado calculado antes, o MCA pode refinar continuamente os parâmetros de custo associados às operações de CPU.
A ideia é garantir que os custos calculados estejam próximos do tempo real levado pra cada operação. Esse ajuste contínuo ajuda a melhorar as decisões do otimizador ao selecionar planos de execução.
Avaliação Experimental
Pra testar a eficácia do MCA, rodamos experimentos usando um benchmark comum chamado TPC-H, que inclui uma série de consultas e conjuntos de dados padrão. O objetivo principal era ver se o MCA poderia melhorar a correlação entre os custos estimados e os tempos de execução reais, além de observar qualquer impacto que ele tivesse na latência geral das consultas.
Os resultados mostraram que usar o MCA melhorou significativamente a correlação entre os custos previstos e os tempos de execução reais, indicando um modelo muito mais preciso. Além disso, a latência geral de execução também melhorou, sugerindo que o MCA permite que o otimizador selecione melhores planos com mais frequência.
Embora nem todas as consultas tenham se beneficiado do MCA, ele mostrou um aumento notável no desempenho para muitas. Algumas consultas lentas ainda foram prejudicadas por erros na estimativa do número de registros sendo processados, o que destaca que, enquanto o MCA melhora a estimativa de custo, ele não resolve todos os problemas na otimização de consultas.
Conclusão
O modelo de custo adaptativo apresentado aqui se mostra uma ferramenta útil pra ajustar dinamicamente os parâmetros relacionados à CPU e ao disco em um otimizador de banco de dados. Ao contrário das abordagens tradicionais, o MCA não exige pré-treinamento ou consultas de calibração periódicas, tornando mais fácil a implementação em aplicações do mundo real. Ele fornece uma estimativa de custo mais precisa ao reagir em tempo real às mudanças de carga de trabalho, o que já mostrou melhorar o desempenho das consultas.
No futuro, há potencial pra combinar o MCA com técnicas voltadas a melhorar a estimativa de cardinalidade, aprimorando ainda mais as capacidades do otimizador. As descobertas até agora ressaltam a importância de ajustar dinamicamente os parâmetros de custo, afirmando que isso pode levar a melhorias significativas na latência de consultas e no desempenho do banco de dados.
Título: Adaptive Cost Model for Query Optimization
Resumo: The principal component of conventional database query optimizers is a cost model that is used to estimate expected performance of query plans. The accuracy of the cost model has direct impact on the optimality of execution plans selected by the optimizer and thus, on the resulting query latency. Several common parameters of cost models in modern DBMS are related to the performance of CPU and I/O and are typically set by a database administrator upon system tuning. However these performance characteristics are not stable and therefore, a single point estimation may not suffice for all DB load regimes. In this paper, we propose an Adaptive Cost Model (ACM) which dynamically optimizes CPU- and I/O-related plan cost parameters at DB runtime. By continuously monitoring query execution statistics and the state of DB buffer cache ACM adjusts cost parameters without the need for manual intervention from a database administrator. This allows for responding to changes in the workload and system performance ensuring more optimal query execution plans. We describe the main ideas in the implementation of ACM and report on a preliminary experimental evaluation showing 20\% end-to-end latency improvement on TPC-H benchmark.
Autores: Nikita Vasilenko, Alexander Demin, Denis Ponomaryov
Última atualização: 2024-09-25 00:00:00
Idioma: English
Fonte URL: https://arxiv.org/abs/2409.17136
Fonte PDF: https://arxiv.org/pdf/2409.17136
Licença: https://creativecommons.org/licenses/by/4.0/
Alterações: Este resumo foi elaborado com a assistência da AI e pode conter imprecisões. Para obter informações exactas, consulte os documentos originais ligados aqui.
Obrigado ao arxiv pela utilização da sua interoperabilidade de acesso aberto.