Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo SQL Magazine 25 - Otimização de consultas no MySQL
Artigo da Revista SQL Magazine - Edição 25.
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?

Clique aqui para ler todos os artigos desta edição
Otimização de consultas no MySQL
Paul DuBois
O mundo da teoria de banco de dados relacionais é dominado por tabelas e conjuntos, e operações em tabelas e conjuntos. Um banco de dados é um conjunto de tabelas, e uma tabela é um conjunto de linhas e colunas. Quando emitimos uma declaração SELECT para recuperar linhas de uma tabela, recebemos outro conjunto de linhas e colunas – isto é, outra tabela. Estas são noções abstratas que não fazem nenhuma referência quanto à representação subjacente que um de sistema de banco de dados usa para operar nos dados e nas tabelas. Outra abstração consiste em que operações em tabelas acontecem todas de uma vez. As consultas são conceituadas como operações de conjuntos e não existe nenhum conceito de tempo na teoria de conjuntos.
O mundo real, é claro, é bastante diferente. Sistemas de gerenciamento de banco de dados implementam conceitos abstratos, mas o fazem em sistemas de hardware reais limitados por restrições físicas reais. Como resultado, as consultas tomam tempo - às vezes um longo e irritante período de tempo. Como somos criaturas impacientes, não gostamos de esperar, deixamos o mundo abstrato de operações matemáticas instantâneas em conjuntos e procuramos por modos de acelerar nossas consultas. Felizmente, existem várias técnicas para atingir este objetivo:
· indexar tabelas para permitir que o servidor de banco de dados pesquise as linhas mais rapidamente;
· considerar como escrever consultas para tirar proveito desses índices extensivamente, e usar a declaração EXPLAIN para conferir se o servidor MySQL realmente o está fazendo;
· escrever consultas para influir no mecanismo de escalonamento do servidor (server's scheduling mechanism) de forma que consultas efetuadas por múltiplos clientes cooperem melhor entre si;
· modificar os parâmetros de operação do servidor para atingir um desempenho mais eficiente. Pensar no que acontece com o hardware subjacente e como contornar suas restrições físicas para obter melhor desempenho.
Estes são os tipos de assuntos que iremos focalizar neste artigo. O objetivo é auxiliá-lo no aperfeiçoamento do desempenho do sistema de banco de dados, de forma que venha a processar as consultas o mais rápido possível.O SGBD que utilizaremos será o MySQL.
Indexação
Indexação é a ferramenta mais importante que temos para acelerar consultas. Temos outras técnicas a nossa disposição, mas geralmente o que faz realmente a diferença é o uso de índices. Na lista de e-mail do MySQL, as pessoas pedem freqüentemente ajuda para fazer com que uma consulta rode mais rapidamente. Em um número surpreendentemente de casos, não existe nenhum índice para as tabelas em consulta, e geralmente, a adição de índices resolve o problema imediatamente. Não é sempre que trabalho assim, porque nem sempre a otimização é tão simples de se obter. Entretanto, se não usarmos índices, em muitos casos estaremos desperdiçando nosso tempo na tentativa de melhorar o desempenho através de outros meios. Usamos a indexação para melhorar o desempenho e então vemos que outras técnicas poderão ser úteis neste sentido.
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Paul Dubois
é escritor e administrador de banco, sendo autor de diversos livros na área de banco de dados.



