SlideShare uma empresa Scribd logo
Perfomance em MySQL
      Ellison Leão
Conteúdo
  ●   EXPLAIN neles!
  ●   MySQL Pivot
  ●   Boas práticas
  ●   Baseado em fatos reais
Antes de tudo
CREATE TABLE exams ( 
    pkey int(11) NOT NULL auto_increment, 
    name varchar(15), 
    exam int, 
    score int,
    PRIMARY KEY (pkey) 
);


           e mais alguns inserts..
EXPLAIN
● EXPLAIN antes de qualquer consulta, traz as
 informações de execução da mesma

● Ótima ferramenta para otimização de consultas
mysql> EXPLAIN SELECT pkey FROM exams
● select_type - mostra o tipo de select utilizado. tipos( SIMPLE,
  PRIMARY, etc..
● table - mostra o nome da tabela de onde vem o resultado (para
  quando são efetuados JOINs entre tabelas);
● type - tipo de join usado. Do melhor para o pior tipo temos: system,
  const, eq_ref, ref, fulltext, range, index, all;
● possible_keys - indica quais os índices que o MySQL pode usar
  para encontrar resultados nesta tabela;
● key - índice usado na consulta, ou NULL caso não tenham sido
  usados índices;
● key_len - tamanho do índice usado, caso exista;
● ref - coluna(s) usada(s) com a key para devolver resultados;
● rows - número de registos que o MySQL tem de examinar para
  executar a consulta;
● extra - informação adicional acerca de como o MySQL vai executar a
  consulta. Evite sempre o aparecimento de “using filesort” e “using
  temporary“.
Um pouco mais complexo




exemplo de explain em uma consulta no database
                  eadsesipr
MySQL Pivot
 ● Também chamado de Cross-Tabulation

 ● Agrupamento de vários campos em uma única
   linha

 ● Ideal para relatórios com bastante dados
   agregados
mysql > select * from exams;
E se quisessemos agrupar as notas de
  cada aluno em apenas uma linha?
Pivot neles!
SELECT name
  ,SUM(IF(exam=1,score,null))   as   nota1
  ,SUM(IF(exam=2,score,null))   as   nota2
  ,SUM(IF(exam=3,score,null))   as   nota3
  ,SUM(IF(exam=4,score,null))   as   nota4
FROM exams GROUP BY name
Resultado
Vantagens
   ● Organização
   ● Agrega grande quantidade de informação em uma
    única linha (gráficos?)


Desvantagens
   ● Query um pouco mais complexa
Boas práticas
● Não seja guloso. Peça apenas o necessário
 (evite SELECT *);

● Os index são seus amigos ( cuidado com os
  excessos - indexes malcriados podem deixar a
  query mais lenta);

● SEMPRE use o EXPLAIN para dissecar suas
  queries e melhorá-las.

● Se puder, evite subconsultas.
A query a seguir é baseada em fatos reais...
Perguntas?
     :)
Referências
  ● http://weevilgenius.net/2010/09/mysql-explain-reference/
  ● http://en.wikibooks.org/wiki/MySQL/Pivot_table
  ● http://dev.mysql.com/doc/refman/5.0/en/explain.html
  ● http://www.mysqlperformanceblog.com/

Mais conteúdo relacionado

PDF
Introdução ao EasyTest
PDF
Aprenda a aplicar fórmulas de subtração no excel
PPTX
Clean Code
PDF
What is new in Go 1.8
PDF
Melhorando o desempenho de suas consultas no MySql
PPT
MySQL Query Optimization
PPTX
Testes Unitários
PPS
Alto desempenho com banco de dados MySQL
Introdução ao EasyTest
Aprenda a aplicar fórmulas de subtração no excel
Clean Code
What is new in Go 1.8
Melhorando o desempenho de suas consultas no MySql
MySQL Query Optimization
Testes Unitários
Alto desempenho com banco de dados MySQL

Semelhante a Perfomance em MySQL (20)

PDF
Conceitos Basicos em Banco de Dados
PPT
Performance Sql Server
PPTX
Base de Dados Consultas Aninhadas.pptx
ODP
Aprofundamento de DDL e DML
PDF
Padrões para Desenvolvimento de Software Guiado por Testes
PPTX
Módulo 1 - Slides - do Curso de Introdução a Java.pptx
PDF
Otimizando suas querys no postgreSQL
PDF
Consultas SQL
PDF
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
PDF
Sql otimizando consulta com sql
PDF
pgDay Campinas – 2015
PPTX
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
PPT
Fundamentos de SQL - Parte 3 de 8
PPTX
Introducao_SQL_Aula5_Final.pptxhhhgghhhtyt
PPTX
Modulo-02-Aula-02-conteudo-de-certi.pptx
PPT
Banco de dados comandos sql
PDF
Dojo banco de dados
PDF
Introdução Programação Funcional
PPT
Testes com JUnit
PPTX
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Conceitos Basicos em Banco de Dados
Performance Sql Server
Base de Dados Consultas Aninhadas.pptx
Aprofundamento de DDL e DML
Padrões para Desenvolvimento de Software Guiado por Testes
Módulo 1 - Slides - do Curso de Introdução a Java.pptx
Otimizando suas querys no postgreSQL
Consultas SQL
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
Sql otimizando consulta com sql
pgDay Campinas – 2015
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
Fundamentos de SQL - Parte 3 de 8
Introducao_SQL_Aula5_Final.pptxhhhgghhhtyt
Modulo-02-Aula-02-conteudo-de-certi.pptx
Banco de dados comandos sql
Dojo banco de dados
Introdução Programação Funcional
Testes com JUnit
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Anúncio

Perfomance em MySQL

  • 1. Perfomance em MySQL Ellison Leão
  • 2. Conteúdo ● EXPLAIN neles! ● MySQL Pivot ● Boas práticas ● Baseado em fatos reais
  • 3. Antes de tudo CREATE TABLE exams (      pkey int(11) NOT NULL auto_increment,      name varchar(15),      exam int,      score int,     PRIMARY KEY (pkey)  ); e mais alguns inserts..
  • 4. EXPLAIN ● EXPLAIN antes de qualquer consulta, traz as informações de execução da mesma ● Ótima ferramenta para otimização de consultas
  • 5. mysql> EXPLAIN SELECT pkey FROM exams
  • 6. ● select_type - mostra o tipo de select utilizado. tipos( SIMPLE, PRIMARY, etc.. ● table - mostra o nome da tabela de onde vem o resultado (para quando são efetuados JOINs entre tabelas); ● type - tipo de join usado. Do melhor para o pior tipo temos: system, const, eq_ref, ref, fulltext, range, index, all; ● possible_keys - indica quais os índices que o MySQL pode usar para encontrar resultados nesta tabela; ● key - índice usado na consulta, ou NULL caso não tenham sido usados índices; ● key_len - tamanho do índice usado, caso exista; ● ref - coluna(s) usada(s) com a key para devolver resultados; ● rows - número de registos que o MySQL tem de examinar para executar a consulta; ● extra - informação adicional acerca de como o MySQL vai executar a consulta. Evite sempre o aparecimento de “using filesort” e “using temporary“.
  • 7. Um pouco mais complexo exemplo de explain em uma consulta no database eadsesipr
  • 8. MySQL Pivot ● Também chamado de Cross-Tabulation ● Agrupamento de vários campos em uma única linha ● Ideal para relatórios com bastante dados agregados
  • 9. mysql > select * from exams;
  • 10. E se quisessemos agrupar as notas de cada aluno em apenas uma linha?
  • 11. Pivot neles! SELECT name ,SUM(IF(exam=1,score,null)) as nota1 ,SUM(IF(exam=2,score,null)) as nota2 ,SUM(IF(exam=3,score,null)) as nota3 ,SUM(IF(exam=4,score,null)) as nota4 FROM exams GROUP BY name
  • 13. Vantagens ● Organização ● Agrega grande quantidade de informação em uma única linha (gráficos?) Desvantagens ● Query um pouco mais complexa
  • 15. ● Não seja guloso. Peça apenas o necessário (evite SELECT *); ● Os index são seus amigos ( cuidado com os excessos - indexes malcriados podem deixar a query mais lenta); ● SEMPRE use o EXPLAIN para dissecar suas queries e melhorá-las. ● Se puder, evite subconsultas.
  • 16. A query a seguir é baseada em fatos reais...
  • 18. Referências ● http://weevilgenius.net/2010/09/mysql-explain-reference/ ● http://en.wikibooks.org/wiki/MySQL/Pivot_table ● http://dev.mysql.com/doc/refman/5.0/en/explain.html ● http://www.mysqlperformanceblog.com/