You are on page 1of 18

FACULDADE PITGORAS

Curso Banco de Dados

OTIMIZAO DE BANCO DE DADOS

Gabriel Augusto Xavier


Leandro
Tiago Gomes Maximiano

Belo Horizonte
2016

MySQL

Foi criado pelos suecos David Axmark e Allan Larsson em conjunto com o
finlands Michael Monty Widenius na dcada de 1980. Eles se basearam no sistema
MSQL que na poca era o menor e mais rpido, porm exigia tempo e muito
conhecimento tcnico para ser implantado. Eles lanaram ao mercado atravs da
empresa MySQL AB fundada por eles o SGBD MySQL que prometia uma instalao
de apenas 5 minutos, alm de usabilidade e velocidade tambm. O MySQL fidelizou
um grande pblico web, que ainda faz o seu uso e nem pensa em abrir mo dele.
Atualmente ele faz parte da marca Oracle que o adquiriu atravs da Sun
Microsystems e o mantm com uma equipe de aproximadamente 400 profissionais
espalhados pelo mundo.

Consultas

O MySQL executa as consultas passando pelas seguintes etapas: Parser,


Otimizador (Transformaes, Busca plano de execuo, Compila plano de
execuo), Execuo, Retorno de Dados. A FIG 01 descreve estes passos de forma
esquematizada.

Figura 01 - Estrutura de excecuo de uma Consulta

O Parser responsvel por verificar o comando SQL sintaticamente e


converter em binrio interno para que se possa enviar para o Otimizador. Porm
esta tarefa causa uma sobrecarga no processo de execuo de consulta porque
cada comando SQL submetido ao MySQL deve passar por ela, sendo muitas vezes
comandos recorrentes. Uma forma de otimizar este passo consiste em utilizar o
Prepared Statments e Stored Procedures, que resultam na formao de
um comando para realizar a funo do Parser e memorizar a instruo em binrio
interno para consultas recorrentes. Abaixo possvel acompamhar um exemplo de
uso do comando Prepare na FIG 02:

Figura 02 - Utilizao de prepared statements em MySQL.

O Otimizador reponsvel por encontrar o caminho mais curto para a


recuperao dos dados, a melhor ordem das tabelas de um join, opta pela a
utilizao de ndices e procura comandos equivalentes que permitam executar a
consulta em menor tempo. Ento ele gera o plano de execuo baseado nas
estatsticas de dados existentes no sistema (cardinalidade de ndices, tamanho de
registros e tabelas, nmero de valores distintos em uma coluna, numero de vezes
que uma consulta executada) aps a concluso do plano, ele segue para a
prxima etapa que a Execuo e para a ultima etapa que o Retorno de dados. O
plano de consulta pode ser visualizado atravs do comando Explain atrelado ao
Select que se deseja analizar, este comando est descrito abaixo na FIG 03:

Figura 03 - Demosntrao do comando Explain

Storage Engine

possvel conseguir desempenho no MySQL alterando a storage engine


padro InnoDB, para a engine opcional MyISAM. Este ganho de desempenho
depende do nvel de concorrncia de transaes de uma tabela. A engine MyISAM
no prov controle de transaes e nem integridade referencial, tornando a leitura e
escrita mais rpidas. Tambm favorece suporte a ndices FULL TEXT e comprimidos
e os ndices so armazenados em rvores binrias balanceadas. O tipo de engine
pode ser especificado por tabela.

Estatsticas

As estatsticas veem por ativadas padro no MySQL, nelas esto contidas


principalmente as informaes dos ndices de chave primria e chave estrangeira.
Esses valores principais so: cardinalidade (quantidade de valores distintos em uma
tabela), numero total de linhas de uma tabela ou os ndices, e as linhas abrangidas
pela chave primria. Os valores estatsticos so estimados devido a constante
ocorrncia de transaes que alteram as tabelas, mas para obter valores precisos
existe o recurso persistent statistics que pode ser ativado e que atualiza as
estatsticas de uma tabela sempre que o comando analyze table executado. As
informaes so persistidas em duas tabelas do schema system. Demais
informaes sobre tabelas e ndices podem ser consultadas atravs das tabelas do
systema information schema. Abaixo seguem as FIGs 04 08 descrevendo estes
comandos.

Figura 04 - Comando para exibir as tabelas do information schema

Figura 05 - Exemplo de consulta uma tabela do information schema

Figura 06 - Ativaao da percistent statistcs

Figura 07 - Atualizao das estatsticas da tabela

Figura 08 - Consulta persistent statistcs

Ferramentas de performance

O MySQL a partir da verso 5.6.6 dispe do Performance Schema ativada por


padro como ferramenta de monitoramento em tempo de execuo. Ele capaz de
armazenar e monitorar todos os evendos do servidor (acesso aos dados, operaes
de I/O, chamadas de sincronizao, locks em tabelas e sobre as storage engines).
Para utiliz-lo necessrio ativar e ele possui tabelas especficas no schemas

system para cada tipo de informao. Abaixo segue a FIG 09 com o exemplo das
tabelas disponveis para consulta:

Figura 09 - Exemplo de tabelas do performance schema

ndices

Os ndices so uma alternativa para otimizao de consulta que consiste em


armazenar em memria uma referncia de uma ou mais colunas para posterior
consulta. possvel criar os seguintes tipos de ndices:

Clustered index: o ndice referente chave primria de uma tabela,


permitido somente um por tabela.

Secondary index so considerados os ndices column index e


composite index, que consistem em ndice por coluna e ndice por mais
de uma coluna.

Covering index: uma tcnica de otimizao para retorno de linhas


completas. Consiste em elaborar uma query onde todos os campos
possuem ndice incluindo uma chave primria.

Partial index: Consiste em um ndice criado em um campo varchar que


se refere ao incio do contedo deste.

Fulltext Index: Esse tipo de ndice torna possvel o uso do like


otimizado em campos de texto.

Hash index: So dices baseados na funo hash como referncia e


utilizado para consultas com operadores de igualdade. Ele mais
rpido, porm no serve para buscar um intervalo de valores.

Adaptive Hash index: um ndice que necessita ser ativado, consiste


em uma ferramenta de otimizao do MySQL para criar ndices hash
para consultas mais utilizadas. Ele criado em tempo de execuo e
no permanente.

Abaixo na FIG 10, segue os comandos necessrios para a criao ou


ativao dos ndices descritos:

Figura 10 - Criao de ndices

Referncias
MySQL Performance Diagnostics & Tuning
http://www.devmedia.com.br/mysql-performance-diagnostics-tuning/18424

MySQL Performance Diagnostics & Tuning - Parte 2


http://www.devmedia.com.br/mysql-performance-diagnostics-tuning-parte-2/20098

Otimizao de Banco de dados no MySQL


http://www.devmedia.com.br/otimizacao-de-banco-de-dados-no-mysql/294

MySQL
https://pt.wikipedia.org/wiki/MySQL

Artigo sql magazine 48 - Otimizao de consultas em MySQL


http://www.devmedia.com.br/articles/viewcomp.asp?comp=8127

Performance do banco de dados MySQL


http://www.devmedia.com.br/performance-do-banco-de-dados-mysql/18508

MySQL Glossary

http://dev.mysql.com/doc/refman/5.6/en/glossary.html

You might also like