Abordagens para a sintonia de comandos SQL - Araújo, Arlino Henrique Magalhães de (2012)
Sistemas Gerenciadores de Bancos de Dados (SGBDs) permitem especificar comandos, por meio de linguagens declarativas de alto nível, como SQL Structured Query Language), por exemplo, com a finalidade de executar diferentes operações sobre os dados armazenados (consultas, atualizações, inserções e remoções). O otimizador de consultas é o módulo do SGBD responsável por escolher um plano de execução eficiente para cada comando SQL a ser executado. Para este propósito, os otimizadores procuram, em um grande espaço de busca, o plano de execução que proporcione o menor tempo de resposta. Dois comandos SQL são considerados equivalentes se retornarem os mesmos resultados. Uma vez que a sintaxe de um comando SQL influencia a escolha do plano de execução, o otimizador pode produzir planos de execução distintos para comandos SQL equivalentes. Consequentemente, comandos SQL equivalentes podem apresentar tempos de resposta diferentes. Este fato decorre das operações utilizadas em cada comando SQL (ordenações, agregações, remoção da valores duplicados, utilização de tabelas temporárias, subconsultas, dentre outras). Neste cenário, mesmo usando métodos de acesso e estratégias de avaliaçãao suportadas pelo SGBD, às vezes, os otimizadores não conseguem produzir planos ótimos. Nestes casos, deve ser realizado o ajuste (ou sintonia) do comando SQL. Para isso, em geral, duas estratégias são frequentemente utilizadas: (a) reescrever o comando SQL; e (b) aplicar Query Hinting. A técnica de reescrita consiste em escrever um novo comando SQL, equivalente ao comando SQL original, mas que apresente um tempo de resposta menor. Entretanto, o processo de reescrita de comandos SQL écomplexo e requer bastante conhecimento em diferentes áreas, tais como: (i) otimização de consultas, execução de operadores de planos de consultas, configuração de parâmetros e outros aspectos internos dos bancos de dados; (ii) identificação de índices necessários e outras e’struturas de acesso; (iii) manutenção de estatísticas sobre os dados; e (iv) características dos sistemas de armazenamento de dados. Este trabalho propõe duas abordagens distintas para suportar a reescrita de comandos SQL em bancos de dados relacionais: uma abordagem assistida e outra automática. As duas abordagens propostas utilizam um conjunto de heurísticas para realizar a reescrita dos comandos SQL. As heurísticas são constituídas de regras que visam identificar oportunidades de sintonia nos comandos SQL. Com o objetivo de avaliar a eficiência das abordagens propostas uma avaliação experimental foi realizada. Os experimentos foram conduzidos em trs diferentes cenários: i) com o benchmark TPC-H, ii) com a base de dados do TPC-H e uma carga de trabalho sintética e iii) com a base de dados do sistema SIG e uma carga de trabalho sintética. Para cada cenário, três SGBDs foram avaliados: PostgreSQL, Oracle e SQL Server. Os resultados dos testes realizados mostram que tanto a abordagem assistida quanto a automática proporcionaram ganhos de desempenho, reduzindo o tempo de resposta das cargas de trabalho avaliadas.