<Insert Picture Here>                            Profiling e Monitoramento                        com MySQL Enterprise Mon...
agendaProblemas cotidianos do DBA e Desenvolvedor     Profiling e Monitoramento do MySQL            MySQL Enterprise Edition
Questões difíceis… problemas de performance?     … servidores down?… queries lentas, custosas?     … política de segurança...
Questões difíceis… problemas de performance?     … servidores down?… queries lentas, custosas?     … política de segurança...
ProfilingIn software engineering, profiling ("program profiling",   "software profiling") is a form of dynamic program   a...
Responsabilidades comuns para BDs 1/2Desenvolvedor/Arquiteto • definir mecanismos eficientes de interação entre aplicação ...
Responsabilidades comuns para BDs 2/2     AMBOS papéis     • modelagem do esquema de dados mais eficiente     • identifica...
Otimização de Queries em 2 passos1. seja um incansável caçador de Queries   lentas mais executadas    •   MySQL Query Anal...
Otimização de Queries em 2 passos1. seja um incansável caçador de Queries   lentas mais executadas    •   MySQL Query Anal...
MySQL Enterprise Monitor: Query Analyzer
Navegando na execução da Query                   Exemplo query exec                    com substitução de                 ...
Integração com MyOracleSupportMySQL Support Diagnostic Reports• Coleta e empacota rapidamente dados do MySQL, SO,  diagnós...
Otimização de Queries em 2 passos1. seja um incansável caçador de Queries   lentas mais executadas    •   MySQL Query Anal...
Índices e EXPLAIN1. Índices são intensamente utilizados     •   operações de Filtro     •   operações Join     •   operaçõ...
Reescreva Queries lentas1. Utilize IN clause     •   SELECT ... WHERE idx IN(1,23,345,456)     •   muito mais rápido que J...
Re-modelagem do esquema de dados1. Storage Engine (tipo de tabela) adequado     • InnoDB     • MyISAM     • Outros: Memory...
MySQL Workbench SEanálise automática e documentação do modelo de dados
Bônus: boas práticas gerais 1/21.   atue nos gargalos2.   não tenha vergonha de perguntar: Google, Forums, MyOracleSupport...
Bônus: boas práticas gerais 2/27. monitore os resultados      •    performance das queries          •    foco no gargalo -...
MySQL Enterprise Monitorimplementa boas práticas com muita produtividade
LinksMySQL Essentials Webinars (Partes de 1 a 7)mysql.com/news-and-events/web-seminars/mysql-essentials.htmlMySQL Training...
Subscrições MySQL                                                                Cluster                                  ...
Oracle Suporte para o MySQL* MySQL Premier Support – 5 anos, começando pelo GA
Suporte Consultivo MySQLDBA eDesenvolvedores
My Oracle Support
Extensões Comerciais• Enterprise Security  • Plug-In: MySQL External Authentication• Enterprise Scalability  • Plug-In: My...
Windows Authentication Connect as  1. MyDomainjoe faz login         App     na aplicação com senha     Windows            ...
Gestão Padrão do Thread Pool             Clientes Externos                                 Gestão Padrão     Execução das ...
Com o Thread Pool Habilitado            Clientes Externos                                      Thread Pool        Execução...
Comparativo com/sem Thread Pool                                 MySQL 5.5 Sysbench OLTP Leitura/Escrita                   ...
Comparativo com/sem Thread Pool        MySQL 5.5 Sysbench OLTP Apenas Leitura    12,000    10,000                         ...
MySQL Enterprise Monitor• Visão única e consolidada em  todo o ambiente MySQL• Auto-descoberta dos servidores  MySQL, topo...
MySQL Enterprise Monitor: Query Analyzer
MySQL Enterprise Backup• Anteriormente “InnoDB Hot Backup”• Online, non-locking backup & recovery    • Tables, Indexes    ...
BackupsBackups são até 3.5x mais rápidos do que mysqldump
Restores        Restore é até 16x mais rápido do que mysqldump- mysqldump performance não é linear (mais tables/indexes im...
Compressão do BackupO tamanho do Backup é reduzido de 65% até 93%
Mais sobre MySQL
MySQL Treinamento e Certificação       Treinamentos  MySQL DBA           MySQLDeveloper               CertificaçõesMySQL B...
07-dez-2011Registre-se: http://bit.ly/usLQoD
Questões Difíceis, Soluções Reais… problemas de performance?                            … servidores down?• MySQL Enterpri...
Obrigado!                                       Time MySQL Brasilmarcos.trujillo@oracle.com   marcelo.t.souza@oracle.com  ...
MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor
Próximos SlideShares
Carregando em…5
×

MySQL Profiling com Enterprise Monitor

1.794 visualizações

Publicada em

Uma atividade que toma bastante tempo do administrador ou desenvolvedor é encontrar Queries que consomem muitos recursos do servidor. Há um expressivo ganho de performance otimizando queries lentas, podendo chegar a aumentar várias vezes o tempo de resposta. Vamos ver como a ferramenta Query Analyzer pode nos ajudar nesta tarefa e ainda conhecer um pouco melhor o que está contido na edição MySQL Enterprise, com foco principalmente em desenvolvedores.

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.794
No SlideShare
0
A partir de incorporações
0
Número de incorporações
21
Ações
Compartilhamentos
0
Downloads
42
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Ext/mysqlOne of the first PHP extensionsActively maintained with PHP 4No new features in PHP 5Exception: Added mysqlnd support with PHP 5.3Bug fixing onlyBest documented database extensionTons of books, tutorials, …Missing support for many MySQL featuresPrepared statements, Queries with multiple result sets (stored procedures), compression, encryption, full charset support, …mysqliFull support for all MySQL featuresStored ProceduresPrepared StatementsEncryption (SSL)CompressionCharsets…Actively developed, maintained and supported by Oracle PDO_mysql“The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP.” http://php.net/intro.pdoLowest common denominatorPHPish APIPDO is emulating prepared statements by default$pdo-&gt;setOption(PDO::MYSQL_ATTR_DIRECT_QUERY, false);
  • Ext/mysqlOne of the first PHP extensionsActively maintained with PHP 4No new features in PHP 5Exception: Added mysqlnd support with PHP 5.3Bug fixing onlyBest documented database extensionTons of books, tutorials, …Missing support for many MySQL featuresPrepared statements, Queries with multiple result sets (stored procedures), compression, encryption, full charset support, …mysqliFull support for all MySQL featuresStored ProceduresPrepared StatementsEncryption (SSL)CompressionCharsets…Actively developed, maintained and supported by Oracle PDO_mysql“The PHP Data Objects (PDO) extension defines a lightweight, consistent interface for accessing databases in PHP.” http://php.net/intro.pdoLowest common denominatorPHPish APIPDO is emulating prepared statements by default$pdo-&gt;setOption(PDO::MYSQL_ATTR_DIRECT_QUERY, false);
  • http://dev.mysql.com/doc/refman/5.5/en/using-explain.html
  • http://dev.mysql.com/doc/refman/5.5/en/query-speed.html
  • http://www.mysql.com/why-mysql/white-papers/mysql_5.5_perf_myisam_innodb.phphttp://dev.mysql.com/doc/refman/5.5/en/procedure-analyse.html
  • Database Design Visual Design, modeling Forward/Reverse Engineer Schema validation, Schema doc SQL DevelopmentSQL Editor - Color Syntax Highlighting Objects - Import/Export, Browse/EditConnections - Wizard, SSH TunnelDatabase AdministrationStatus, Configuration, Start/StopUsers, Security, SessionsImport/Export Dump FilesScripting &amp; Plug-in SupportUI Designed to match VS 2010
  • MySQL External AuthenticationMySQL Thread Pool
  • Rapid Connection HandlingMySQL offers a specialized internal thread/connection cache that very quickly establishes incoming new connections and efficiently terminates existing connections upon request. The MySQL connection pool service new customer requests so no overhead is wasted on building new connections from scratch. This means that connecting to and disconnecting from the MySQL Database does not incur a performance penalty.ol always has new threads at the ready to
  • MySQL Profiling com Enterprise Monitor

    1. 1. <Insert Picture Here> Profiling e Monitoramento com MySQL Enterprise Monitor Marcos Trujillo marcos.trujillo@oracle.com Airton Lastori airton.lastori@oracle.com dez-2011
    2. 2. agendaProblemas cotidianos do DBA e Desenvolvedor Profiling e Monitoramento do MySQL MySQL Enterprise Edition
    3. 3. Questões difíceis… problemas de performance? … servidores down?… queries lentas, custosas? … política de segurança, muda?… onde, quando, como “tunar”? … produtividade de desenv./QA?… problemas de replicação? … qual versão do MySQL rodar?… os sistemas escalarão? … posso recuperar?
    4. 4. Questões difíceis… problemas de performance? … servidores down?… queries lentas, custosas? … política de segurança, muda?… onde, quando, como “tunar”? … produtividade de desenv./QA?… problemas de replicação? … qual versão do MySQL rodar?… os sistemas escalarão? … posso recuperar?
    5. 5. ProfilingIn software engineering, profiling ("program profiling", "software profiling") is a form of dynamic program analysis that measures, for example, the usage of memory, the usage of particular instructions, or frequency and duration of function calls. The most common use of profiling information is to aid program optimization.
    6. 6. Responsabilidades comuns para BDs 1/2Desenvolvedor/Arquiteto • definir mecanismos eficientes de interação entre aplicação e BD • dimensionamento/upgrade de hardware • responsabilidade sobre a performance geral da aplicação, além de outros requisitos não funcionais • correção de problemas em QA ou Produção (inclusive reescrita de queries para otimização)SysAdmin/DBA • otimização do esquema de dados • criação e utilização correta de índices • ajuste de variáveis no MySQL Server (tuning) • monitoramento e ações corretivas • manutenção dos indices e dados
    7. 7. Responsabilidades comuns para BDs 2/2 AMBOS papéis • modelagem do esquema de dados mais eficiente • identificar e melhorar queries que consomem muitos recursosnormalmente a razão #1de perdas de performance Lembre-se: o objetivo do profiling é otimizar!
    8. 8. Otimização de Queries em 2 passos1. seja um incansável caçador de Queries lentas mais executadas • MySQL Query Analyzer • maior produtividade, menor overhead • Recursos nativos • slow query log, mysqldumpslow > SHOW PROCESSLIST > select_scan, select_full_join2. aplique melhorias • indexação, EXPLAIN • reescrita de queries • re-modelagem do esquema de dados
    9. 9. Otimização de Queries em 2 passos1. seja um incansável caçador de Queries lentas mais executadas • MySQL Query Analyzer • maior produtividade, menor overhead • Recursos nativos • slow query log, mysqldumpslow > SHOW PROCESSLIST > select_scan, select_full_join2. aplique melhorias • indexação, EXPLAIN • reescrita de queries • re-modelagem do esquema de dados
    10. 10. MySQL Enterprise Monitor: Query Analyzer
    11. 11. Navegando na execução da Query Exemplo query exec com substitução de variável Stack Trace com informações do código-fonte EXPLAIN completo para otimização de índices
    12. 12. Integração com MyOracleSupportMySQL Support Diagnostic Reports• Coleta e empacota rapidamente dados do MySQL, SO, diagnósticos de Queries em um relatório para o Oracle Support• Acompanhamento de tickets do Oracle Support (SRs)• Tempo de resposta acelerado, menor risco
    13. 13. Otimização de Queries em 2 passos1. seja um incansável caçador de Queries lentas mais executadas • MySQL Query Analyzer • maior produtividade, menor overhead • Recursos nativos • slow query log, mysqldumpslow > SHOW PROCESSLIST > select_scan, select_full_join2. aplique melhorias • indexação, EXPLAIN • reescrita de queries • re-modelagem do esquema de dados
    14. 14. Índices e EXPLAIN1. Índices são intensamente utilizados • operações de Filtro • operações Join • operações Sort2. EXPLAIN mostra como (e se) estão sendo utilizados3. Boas práticas • não criar índices desnecessários (degrada performance de escrita) • não criar indices com inicio idêntico (leading part) • não usar toda string para os índices (apenas uma parte inicial já basta) • 16 bytes ou menos • com mais de 32 bytes devem ter cuidados especiais (como cache próprio MyISAM) • crie colunas com hashes e indexe-os ao invés de string longas http://dev.mysql.com/doc/refman/5.5/en/using-explain.html
    15. 15. Reescreva Queries lentas1. Utilize IN clause • SELECT ... WHERE idx IN(1,23,345,456) • muito mais rápido que JOINS • ex. 1k-2k vezes para 80k items2. Não encapsule seus índices no WHERE • Mantenha índices isolados no lado esquerdo da condição • Select ... Where func(idx) = 20 [index ignored] • Select .. Where idx = otherfunc(20) [may use index]3. Evite % no início do LIKE em um índice • Select ... Where idx LIKE(„ABC%‟) pode usar índice • Select ... Where idx LIKE(„%XYZ‟) fará full table scan4. Use UNION ALL quando apropriado • default é UNION DISTINCT5. Entenda Left/Right JOINS e use apropriadamente http://dev.mysql.com/doc/refman/5.5/en/query-speed.html
    16. 16. Re-modelagem do esquema de dados1. Storage Engine (tipo de tabela) adequado • InnoDB • MyISAM • Outros: Memory, Archive ...2. Tipos de dados e tamanhos corretos • Tamanhos menores, melhor performance • Não use 255 VARCHAR para tudo • Considere o uso de ENUM e SET • Temporary Tables e Caches estouram tamanho total • PROCEDURE ANALYZE3. Comprima strings longas • COMPRESS e UNCOMPRESS • No caso de InnoDB, mais importante para versões anteriros a 5.5 http://www.mysql.com/why-mysql/white-papers/mysql_5.5_perf_myisam_innodb.php http://dev.mysql.com/doc/refman/5.5/en/procedure-analyse.html
    17. 17. MySQL Workbench SEanálise automática e documentação do modelo de dados
    18. 18. Bônus: boas práticas gerais 1/21. atue nos gargalos2. não tenha vergonha de perguntar: Google, Forums, MyOracleSupport3. monitore, seja pró ativo e aceite alguns conselhos: Advisors4. nunca faça mudanças no ambiente de produção, tenha um bom conjunto de testes 1. benchmark: DBT2, SysBench, mysqlslap, mybench 2. testes automatizados com queries reais: general log, MySQL Proxy, TCP Dump 3. simule carga que se aproxima do ambiente de produção5. defina objetivos e uma base de comparação (antes e depois) 1. aumentar Transações Por Segundo (TPS) 2. aumentar usuários simultâneos 3. diminuir IO time wait6. mude apenas uma coisa por vez 1. identifique um possível conjunto de mudanças 2. tente mudá-las separadamente 3. tente combinações
    19. 19. Bônus: boas práticas gerais 2/27. monitore os resultados • performance das queries • foco no gargalo - mais executadas e que tomam maior tempo • Throughput • média dos tempos das queries melhor que tempos únicos das queries • CPU • IO • Network bandwidth8. documente e salve os resultados, mantenha seu histórico para seu uso e da equipe
    20. 20. MySQL Enterprise Monitorimplementa boas práticas com muita produtividade
    21. 21. LinksMySQL Essentials Webinars (Partes de 1 a 7)mysql.com/news-and-events/web-seminars/mysql-essentials.htmlMySQL Training (incluindo MySQL Performance Tuning)education.oracle.comMySQL Performance Forumforums.mysql.com/list.php?24MySQL White Papersdev.mysql.com/why-mysql/white-papersMySQL Enterprise Monitor (trial 30 dias)edelivery.oracle.com
    22. 22. Subscrições MySQL Cluster Enterprise CarrierValor Agregado Edition Grade Standard Enterprise + Edition Standard + • MySQL Database • Plug-Ins • Premier Support • Enterprise Monitor • Workbench SE • Enterprise Backup • Cluster Manager
    23. 23. Oracle Suporte para o MySQL* MySQL Premier Support – 5 anos, começando pelo GA
    24. 24. Suporte Consultivo MySQLDBA eDesenvolvedores
    25. 25. My Oracle Support
    26. 26. Extensões Comerciais• Enterprise Security • Plug-In: MySQL External Authentication• Enterprise Scalability • Plug-In: MySQL Thread Pool
    27. 27. Windows Authentication Connect as 1. MyDomainjoe faz login App na aplicação com senha Windows ConnectorConnect as Connect as 3. A aplicação conecta-se 2. MyDomainjoe é ao MySQL com usuário autenticado via win_joe. LDAP/ADConnected Connect as 4. Tokens são verificados, o usuário win_joe é autenticado com Windows login, porém Authenticate Windows com privilégios do MySQL. LDAP/AD Auth CREATE USER win_joe IDENTIFIED WITH authentication_windows AS ‘joe;
    28. 28. Gestão Padrão do Thread Pool Clientes Externos Gestão Padrão Execução das Conexões das Threads doThread Pool Conexões / Declarações atribuídas aos Threads durante sua existênciaClientes Internos• Conexões são atribuídas a 1 thread durante a existência da Conexão.• A mesma thread é usada para todas as declarações de execução (single threaded)
    29. 29. Com o Thread Pool Habilitado Clientes Externos Thread Pool Execução das Conexões das Threads Grupo Thread 1 Grupo Thread 1 Threads 1 - 4096 Grupo Thread 2 Grupo Thread 2 Threads 4097 - 8193 Grupo Thread N Grupo Thread N Threads 8194 - NClientes Internos• Pool contém um número de Grupo de Threads(default = 16), cada um gerencia até 4096 threads reusáveis• Cada conexão é atribuída ao grupo de thread via round robin mantém a performance em altas cargas de usuários/conexões
    30. 30. Comparativo com/sem Thread Pool MySQL 5.5 Sysbench OLTP Leitura/Escrita 8,000 7,000Transações por segundo MySQL Enterprise Edition 6,000 ComThread Pool 5,000 4,000 3,000 2,000 1,000 0 MySQL Community Server Sem Thread Pool Conexões Simultâneas no Banco de Dados MySQL 5.5.16 Oracle Linux 6.1, Unbreakable Kernel 2.6.32 2 sockets, 24 cores, 2 X 12-core Intel(R) Xeon(R) X5670 2.93GHz CPUs 20x Melhor Escalabilidade comThread Pool 72GB DDR3 RAM 2 X LSI SCSI Disk (MR9261-8i) (597GB)
    31. 31. Comparativo com/sem Thread Pool MySQL 5.5 Sysbench OLTP Apenas Leitura 12,000 10,000 MySQL Enterprise Edition ComThread Pool 8,000 6,000T 4,000 MySQL Community Server 2,000 SemThread Pool 0 Conexões Simultâneas no Banco de Dados MySQL 5.5.16 Oracle Linux 6.1, Unbreakable Kernel 2.6.32 2 sockets, 24 cores, 2 X 12-core Intel(R) Xeon(R) X5670 2.93GHz CPUs 72GB DDR3 RAM 3x Melhor Escalabilidade com Thread Pool 2 X LSI SCSI Disk (MR9261-8i) (597GB)
    32. 32. MySQL Enterprise Monitor• Visão única e consolidada em todo o ambiente MySQL• Auto-descoberta dos servidores MySQL, topologias de replicação• Regras personalizáveis de monitorização e alertas• Identificação de problemas antes que eles ocorram• Reduz o risco de inatividade• Facilita “scale out” sem exigir mais DBAs Assistente virtual do DBA MySQL! http://mysql.com/trials/
    33. 33. MySQL Enterprise Monitor: Query Analyzer
    34. 34. MySQL Enterprise Backup• Anteriormente “InnoDB Hot Backup”• Online, non-locking backup & recovery • Tables, Indexes • Server, database, ou object-level• Backups Lógico e Físico• Backups Completos ou Incrementais• Point-in-time recovery• Backups Comprimidos• Também oferece backup e recuperação para MyISAM• Multi-plataforma (Windows, Linux, Unix)• Certificado para Oracle Secure Backup (SBT 2.0)
    35. 35. BackupsBackups são até 3.5x mais rápidos do que mysqldump
    36. 36. Restores Restore é até 16x mais rápido do que mysqldump- mysqldump performance não é linear (mais tables/indexes impacta na performance)- MySQL Enterprise performance é quase linear
    37. 37. Compressão do BackupO tamanho do Backup é reduzido de 65% até 93%
    38. 38. Mais sobre MySQL
    39. 39. MySQL Treinamento e Certificação Treinamentos MySQL DBA MySQLDeveloper CertificaçõesMySQL Boot Camp MySQL Boot Camp Accelerated AcceleratedMySQL Performance MySQL Performance Tuning Boot Camp Tuning Boot Camp Accelerated AcceleratedMySQL for Begginers MySQL for BegginersMySQL for Database MySQL and PHP Administrators Developing Dynamic Web ApplicationgMySQL Performance Tuning MySQL for Developers MySQL High MySQL Advanced Availability Stored Procedures MySQL Cluster Opcional Necessário http://education.oracle.com
    40. 40. 07-dez-2011Registre-se: http://bit.ly/usLQoD
    41. 41. Questões Difíceis, Soluções Reais… problemas de performance? … servidores down?• MySQL Enterprise Scalability • Oracle Premier 7x24 Support• MySQL Enterprise Monitor, Advisors, Query Analyzer • MySQL Enterprise Monitor, Advisors• MySQL Consultative Support • MySQL Enterprise High Availability… queries lentas, custosas? … política de segurança, muda?• MySQL Enterprise Monitor, Query Analyzer • MySQL External Authentication… onde, quando, como “tunar”? • MySQL Enterprise Monitor, Security Advisor• MySQL Enterprise Monitor, Advisors, Query Analyzer• MySQL Consultative Support … produtividade de desenv./QA? • MySQL Workbench SE • MySQL Enterprise Monitor, Query Analyzer… problemas de replicação?• MySQL Enterprise Monitor, Replication Monitor … qual versão do MySQL rodar?• Oracle Premier 7x24 Support • Oracle Premier 7x24 Support… os sistemas escalarão? … posso recuperar?• MySQL Enterprise Scalability • MySQL Enterprise Backup• MySQL Enterprise Monitor, Advisors, Query Analyzer• MySQL Consultative Support
    42. 42. Obrigado! Time MySQL Brasilmarcos.trujillo@oracle.com marcelo.t.souza@oracle.com ana.guiselini@oracle.com airton.lastori@oracle.com @MySQLBR meetup.com/MySQL-BR

    ×