SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
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/

Contenu connexe

Similaire à Perfomance em MySQL

Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosAlefe Variani
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Serverjarlei
 
Base de Dados Consultas Aninhadas.pptx
Base de Dados Consultas Aninhadas.pptxBase de Dados Consultas Aninhadas.pptx
Base de Dados Consultas Aninhadas.pptxMuseiwaLopes
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesEverton Rodrigues
 
Otimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLOtimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLJean Pierre Monteiro
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhoresRodrigo Crespi
 
Sql otimizando consulta com sql
Sql otimizando consulta com sqlSql otimizando consulta com sql
Sql otimizando consulta com sqlbiapecheco
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxAugustoNicolau2
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sqlNilson Augustini
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server Marcos Freccia
 

Similaire à Perfomance em MySQL (19)

Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Performance Sql Server
Performance Sql ServerPerformance Sql Server
Performance Sql Server
 
Base de Dados Consultas Aninhadas.pptx
Base de Dados Consultas Aninhadas.pptxBase de Dados Consultas Aninhadas.pptx
Base de Dados Consultas Aninhadas.pptx
 
Aprofundamento de DDL e DML
Aprofundamento de DDL e DMLAprofundamento de DDL e DML
Aprofundamento de DDL e DML
 
Padrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por TestesPadrões para Desenvolvimento de Software Guiado por Testes
Padrões para Desenvolvimento de Software Guiado por Testes
 
Otimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQLOtimizando suas querys no postgreSQL
Otimizando suas querys no postgreSQL
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
24H PASS PT-BR 10 Dicas para escrever códigos t-sql melhores
 
Sql otimizando consulta com sql
Sql otimizando consulta com sqlSql otimizando consulta com sql
Sql otimizando consulta com sql
 
pgDay Campinas – 2015
pgDay Campinas – 2015pgDay Campinas – 2015
pgDay Campinas – 2015
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Modulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptxModulo-02-Aula-02-conteudo-de-certi.pptx
Modulo-02-Aula-02-conteudo-de-certi.pptx
 
Banco de dados comandos sql
Banco de dados   comandos sqlBanco de dados   comandos sql
Banco de dados comandos sql
 
Dojo banco de dados
Dojo   banco de dadosDojo   banco de dados
Dojo banco de dados
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
Webcast: 5 coisas que todo desenvolvedor deveria saber sobre sql server
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 

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/