O documento resume como otimizar o desempenho do MySQL discutindo como medir o desempenho, otimizar consultas SQL, configurar o arquivo my.cnf e melhorar a arquitetura usando particionamento, replicação e sharding.
Muitas empresas não possuem um DBA, apenas um programador. Quando o volume de dados cresce, o programador acaba sendo bastante penalizado e muitas vezes pode até mesmo perder o emprego. Essa palestra traz dicas valiosas de como otimizar bancos de dados MySQL sem precisar ser um DBA.
O MySQL 5.6 já está pronto para produção desde fevereiro de 2013 e inclui um número impressionante de melhorias de performance e recursos para diagnóstico o tuning. Nesta apresentação serão mostradas estas melhorias e alguns exemplos de como ajustar o MySQL para um desempenho ainda maior, identificando e resolvendo rapidamente os gargalos mais comuns.
Serão discutidas:
-Melhorias de performance com o upgrade para MySQL 5.6
-Configurações do servidor relacionados à performance
-Como usar índices de maneira eficiente
-Como usar o novo visual EXPLAIN para verificar os planos de execução de consulta
-Quais os problemas de performance mais comuns, como identificá-los e resolvê-los
Muitas empresas não possuem um DBA, apenas um programador. Quando o volume de dados cresce, o programador acaba sendo bastante penalizado e muitas vezes pode até mesmo perder o emprego. Essa palestra traz dicas valiosas de como otimizar bancos de dados MySQL sem precisar ser um DBA.
O MySQL 5.6 já está pronto para produção desde fevereiro de 2013 e inclui um número impressionante de melhorias de performance e recursos para diagnóstico o tuning. Nesta apresentação serão mostradas estas melhorias e alguns exemplos de como ajustar o MySQL para um desempenho ainda maior, identificando e resolvendo rapidamente os gargalos mais comuns.
Serão discutidas:
-Melhorias de performance com o upgrade para MySQL 5.6
-Configurações do servidor relacionados à performance
-Como usar índices de maneira eficiente
-Como usar o novo visual EXPLAIN para verificar os planos de execução de consulta
-Quais os problemas de performance mais comuns, como identificá-los e resolvê-los
Uso de banco de dados MySQL com PHP através das funções próprias do PHP. Slides utilizado no curso de extensão em desenvolvimento em Nuvem com PHP do curso técnico em informática no IFPE - Garanhuns.
Palestra apresenta no PGDay Campinas 2014, apresentando o programa PGAnalytics.
Palestra apresentada por Matheus Espanhol, Matheus Oliveira e Vinícius Schmidt
Pequena apresentação realizada na Faculdade de Tecnologia e Ciências sobre o Oracle e algumas de suas ferramentas voltadas a segurança. Ministrada pelos discentes: Anderson Castro, Denis Vieira e Francenildo Jesus no dia 21-11-2013, sob orientação do então professor da matéria de análise e segurança de banco de dados - Antonio Carlos Marcelino.
Trabalho apresentado pelos alunos Márcia Gomes e Marlon Munhoz nas aulas de Banco de Dados, ministradas pela docente Lígia R. Prete na Faculdade de Tecnologia de Jales - FATEC Jales. Ano: 2011.
Palestra ministrada no evento FTSL 2015.
Uma coleção de várias dicas e recomendações para um projeto de banco de dados bem consolidado e com boa performance, além de abandonar maus costumes.
Evento: FTSL 2015
Data: 18/09/2015,
Local: Universidade Tecnológica Federal do Paraná (UTFPR), Curitiba - PR
http://ftsl.org.br/
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Daniel Rehn
Vorlesung im Studiengang Sport-, Event- und Medienmanagement am Campus M21 in München im Modul "Angewandte Medien – Medienpraxis II: Online".
Skript vom 11.02.2013.
Uso de banco de dados MySQL com PHP através das funções próprias do PHP. Slides utilizado no curso de extensão em desenvolvimento em Nuvem com PHP do curso técnico em informática no IFPE - Garanhuns.
Palestra apresenta no PGDay Campinas 2014, apresentando o programa PGAnalytics.
Palestra apresentada por Matheus Espanhol, Matheus Oliveira e Vinícius Schmidt
Pequena apresentação realizada na Faculdade de Tecnologia e Ciências sobre o Oracle e algumas de suas ferramentas voltadas a segurança. Ministrada pelos discentes: Anderson Castro, Denis Vieira e Francenildo Jesus no dia 21-11-2013, sob orientação do então professor da matéria de análise e segurança de banco de dados - Antonio Carlos Marcelino.
Trabalho apresentado pelos alunos Márcia Gomes e Marlon Munhoz nas aulas de Banco de Dados, ministradas pela docente Lígia R. Prete na Faculdade de Tecnologia de Jales - FATEC Jales. Ano: 2011.
Palestra ministrada no evento FTSL 2015.
Uma coleção de várias dicas e recomendações para um projeto de banco de dados bem consolidado e com boa performance, além de abandonar maus costumes.
Evento: FTSL 2015
Data: 18/09/2015,
Local: Universidade Tecnológica Federal do Paraná (UTFPR), Curitiba - PR
http://ftsl.org.br/
Campus M21 | Medienpraxis II: Online - Vorlesung III vom 11.02.2013Daniel Rehn
Vorlesung im Studiengang Sport-, Event- und Medienmanagement am Campus M21 in München im Modul "Angewandte Medien – Medienpraxis II: Online".
Skript vom 11.02.2013.
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 30.01.2013Daniel Rehn
Vorlesung im Studiengang Sport-, Event- und Medienmanagement am Campus M21 in München im Modul "Angewandte Medien – Medienpraxis II: Online".
Skript vom 30. Januar 2013.
Semana 5: Caracteres, tipos char e int, tipos de valor vs. tipos de referênciaManuel Menezes de Sequeira
Apresentação da semana 5 da unidade curricular de Introdução à Programação do DCTI do ISCTE-IUL. Alterações de Manuel Menezes de Sequeira sobre versão original por vários autores do DCTI, incluindo Luís Nunes e André Santos.
Découvrez les bonnes pratiques, conseils et astuces concernant le développement, l'administration et l'architecture de Microsoft SQL Server 2008 et des versions antérieures ! Cette présentation est conçue aussi bien pour les administrateurs de base de données ou développeurs de Microsoft SQL Server que pour les DBAs occassionnels.
Campus M21 | Medienpraxis II: Online - Vorlesung I vom 31.01.2013Daniel Rehn
Vorlesung im Studiengang Sport-, Event- und Medienmanagement am Campus M21 in München im Modul "Angewandte Medien – Medienpraxis II: Online".
Skript vom 31. Januar 2013.
Les slide, de la présentation faite lors de la conférence LeanKanban FR 2013 afin de découvrir l'approche kanban de manière décalée.
L'article à l'origine de la présentation: http://jfallet.wordpress.com/2013/05/31/comment-jai-explique-le-fut-tire-a-mon-pere/
Novidades do Universo MySQL Agosto 2014MySQL Brasil
Investimentos da Oracle no MySQL está elevando o nível do produto a um novo patamar. Baseada na apresentação do VP de Engenharia MySQL, Tomas Ulin, esta apresentação cobre as principais novidades do MySQL 5.7, MySQL Cluster 7.4, MySQL Fabric etc.
Conheça a fundo o JBoss e sua mais nova versão o WildFly.
Este seminário aborda a história, arquitetura, funcionamento e dicas sobre o JBoss/WildFly e monta um ambiente de produção com um HTTP Server funcionando como load balancer e proxy reverso com vários JBoss em cluster.
Investimentos da Oracle no MySQL está elevando o nível do produto a um novo patamar. Baseada na apresentação do VP de Engenharia MySQL, Tomas Ulin, esta apresentação cobre as principais novidades do MySQL 5.7, MySQL Cluster 7.4, MySQL Fabric etc.
Desenvolvendo serviços escaláveis e de alta performance com MySQLMySQL Brasil
As exigências cada vez maiores de escalabilidade e performance nas aplicações Web e Mobile exigem novas estratégias no uso de bancos de dados, como por exemplo novos métodos de acesso NoSQL para MySQL. Tais métodos foram implementados recentemente e incluem APIs Java e Memcached que são uma alternativa de alto desempenho e escalável para consultas simples e que não requerem a definição de um esquema de dados rígido, mas também permitem aproveitar todas as vantagens já conhecidas de bancos de dados relacionais existentes. Nesta apresentação mostraremos os novos métodos de acesso NoSQL para MySQL Server com InnoDB e MySQL Cluster e alguns casos de uso em arquiteturas Web e Mobile.
MySQL Profiling com Enterprise Monitor MySQL Brasil
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.
Slides para discutir a arquitetura do SQL Server, alguns dos principais slides a idéia principal foi retirada da explicacação sencacional fornecida pelo Fabricio Catae na série Fundamentos de Bancos de Dados - https://blogs.msdn.microsoft.com/fcatae/2014/04/29/vdeos-de-fundamentos-banco-de-dados/
como um Data Warehouse pode complementar sua estratégia de dados e trazer impacto no seu negócio através de analytics (sem te levar à falência)
atualizada em 11/2018 com alguns dos últimos anúncios pre-re:Invent.
apresentada no 10º AWS Porto Alegre MeetUp: https://www.meetup.com/AWS-Porto-Alegre/events/256404950/
Serviços Escaláveis e de Alta Performance com MySQL e JavaMySQL Brasil
As necessidades cada vez maiores de escalabilidade e performance nas aplicações Web e Mobile exigem novas estratégias no uso de bancos de dados, como por exemplo novos métodos de acesso NoSQL para MySQL. Tais métodos foram implementados recentemente e incluem APIs Java e Memcached que são uma alternativa de alto desempenho e escalável para consultas simples e que não requerem a definição de um esquema de dados rígido, mas também permitem aproveitar todas as vantagens já conhecidas de bancos de dados relacionais existentes.
Nesta apresentação mostraremos os novos métodos de acesso NoSQL para MySQL Server com InnoDB e MySQL Cluster e alguns casos de uso em arquiteturas Web e Mobile.
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
Os investimentos da Oracle no MySQL estão elevando o nível do produto a um novo patamar. Esta apresentação é sobre as principais novidades do MySQL 5.7, MySQL Cluster 7.4, MySQL Fabric etc. Confira os ganhos de performance, robustez e as novas opções de alta-disponibilidade, escalabilidade e sharding. Tópicos: Oracle Stack e o posicionamento do MySQL; Suporte do VP Edward Screeven, Arquiteto Global da Oracle; Grandes empresas utilizando o MySQL: Facebook, Twitter, Google, etc; Roadmap de investimento no produto e histórico; Alta-disponibilidade; Escalabilidade; Sharding
ou como um Data Warehouse pode complementar sua estratégia de dados e trazer impacto no seu negócio através de analytics (sem te levar à falência)
apresentada no CloudUp - Porto Alegre em Março de 2019
gravação ao final dos slides ou https://youtu.be/XqkfAwDorrk
Go e Microserviços - Nascidos um para o outroElton Minetto
Nesta palestra apresento uma introdução à linguagem Go, com suas características, vantagens e porque ela se tornou uma das mais usadas para o desenvolvimento de projetos baseados na arquitetura de microserviços .
Em seu livro "Clean Architecture: A Craftsman's Guide to Software Structure and Design" o famoso autor Robert "Uncle Bob" Martin apresenta uma arquitetura com alguns pontos importantes como testabilidade e independência de frameworks, bancos de dados e interfaces.
Nesta apresentação vou mostrar exemplos de como aplicar estes conceitos em projetos escritos em Golang e PHP
Nesta palestra vou mostrar os desafios para modernizar um projeto usando conceitos como API Gateway, Webhooks e eventos. Vou apresentar o caso de sucesso de um de nossos clientes e como resolvemos estes e outros desafios usando Zend Expressive 2, containers e testes automatizados.
Os 12 fatores são uma lista de boas práticas que projetos e times podem aplicar para rodar seus aplicativos na núvem Nesta palestra vou apresentar cada um dos fatores, suas vantagens e como aplicá-los em projetos PHP
2. QUEM SOU EU?
• Graduado e pós-graduado em Ciência da Computação
• Trabalha com PHP/MySQL desde 2000. Trabalha com Linux
desde 1997. Professor desde 2004.
• Autor do livro Frameworks para Desenvolvimento em PHP -
Editora Novatec e co-autor do livro Grid Computing in
Research and Education - IBM Redbooks
• Membro do PHPSC
• Sócio da Coderockr
quarta-feira, 6 de julho de 2011
3. QUEM USA MYSQL?
• Facebook • Flickr
• Twitter • 37Signals
apps (Basecamp,
Campfire)
• Feedburner
• Linkedin
• Digg
• Friendster
quarta-feira, 6 de julho de 2011
8. CONCEITOS
• Avaliação de desempenho
• “Quão bem isto executa?”
• Determinar a capacidade de um sistema
• Análise de desempenho
• “Por que isso executa desta maneira?”
• Determinar onde a aplicação gasta mais tempo e recurso
quarta-feira, 6 de julho de 2011
9. CONCEITOS
• Avaliar a aplicação inteira (full-stack)
• ab; siege; http_load; jMeter
• ou somente o MySQL (single-component)
• mysqlslap; sysbench; Database Test Suite; MySQL Benchmark
Suite (sql-bench) ; innotop
quarta-feira, 6 de julho de 2011
10. CONCEITOS
•O que medir
• Transações por unidade de tempo
• Tempo de resposta ou latência
• Escalonamento
• Concorrência
quarta-feira, 6 de julho de 2011
11. NATIVAS- SHOW STATUS
• Open_tables, Opened_tables: Número de tabelas abertas
atualmente e o número de tabelas abertas desde que foi
iniciado. Analisa se está certo o cache de tabelas. Valores altos
significam que o cache deveria ser maior
• Slow_queries: Número de queries demorando mais do que
um valor pré-determinado de tempo (my.cnf).
• Select_scan: Número de queries que estão usando um full
scan para encontrar os dados. Valores altos significam que as
queries devem ser otimizadas.
quarta-feira, 6 de julho de 2011
12. NATIVAS- SHOW STATUS
• Select_full_join: Número de joins que estão sendo executadas
sem o uso de índices. Valor alto significa que índices devem ser
criados ou consultas otimizadas.
• Qcache_hits: Número de acessos ao cache de queries do
MySQL. Um valor alto significa que o MySQL está usando o
cache de maneira eficiente, sem precisar reconstruir a query
em toda execução
quarta-feira, 6 de julho de 2011
13. MYSQLADMIN
• Conexões
• mysqladmin extended -i10 | grep Threads_running
• Total de queries
• mysqladmin extended -i10 | grep Questions
quarta-feira, 6 de julho de 2011
15. MELHORANDO A
PERFORMANCE
•É possível melhorar a performance do MySQL de três
maneiras:
• Tunning do arquivo de configuração (my.cnf)
• Otimizando as consultas SQL
• Melhorando hardware/arquitetura
quarta-feira, 6 de julho de 2011
17. MY.CNF
•O arquivo original da instalação do MySQL possui uma
configuração com recursos reduzidos. Usar o arquivo
apropriado:
• my-huge.cnf (enorme capacidade) - Servidores com mais de 1
Gb de memória RAM dedicada ao MySQL
• my-large.cnf (grande capacidade) - Servidores com 512 megas
a 1 Gb de memória RAM dedicadas ao MySQL
• my-medium.cnf (média capacidade) - Servidores com 128 a
256 megas de memória RAM dedicadas ao MySQL
• my-small.cnf (pequena capacidade) - Servidores com 64 a 128
megas de memória RAM dedicadas ao MySQL
quarta-feira, 6 de julho de 2011
18. MYSQL PERFORMANCE
TUNING PRIMER SCRIPT
• Script que auxilia a identificar mudanças no arquivo de
configuração do MySQL
• wget http://day32.com/MySQL/tuning-primer.sh
• chmod +x ./tuning-primer.sh
• ./tuning-primer.sh
•É apresentado um relatório dividido em várias seções com
sugestões de modificações nos parâmetros
quarta-feira, 6 de julho de 2011
20. OTIMIZAÇÃO DE
CONSULTAS/DADOS
• “Fazer o tunning do MySQL durante a escolha da engine de
armazenamento das tabelas. Usar InnoDB quando precisa de
transações e MyISAM quando não precisa” (Digg)
• “Desnormalização ou cacheamento são as únicas formas de
gerar uma tag cloud em milissegundos para milhões de
tags” (Flickr)
• Usar o tipo correto de dados na tabela:
• INT x SMALLINT x TINYINT; CHAR x VARCHAR
quarta-feira, 6 de julho de 2011
21. EXPLAIN
• table - mostra o nome da tabela à qual o resultado diz
respeito (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, 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;
quarta-feira, 6 de julho de 2011
22. EXPLAIN
• 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 que examinar
para executar a consulta;
• extra - informação adicional acerca de como o MySQL vai
executar a consulta. A evitar o aparecimento de “using
filesort” e “using temporary“.
quarta-feira, 6 de julho de 2011
24. • Sobre o Youtube:
• “Eles seguiram uma evolução comum: servidor único, único
master e múltiplos slaves para leitura e depois particionaram
(sharding) a base de dados.”
quarta-feira, 6 de julho de 2011
25. HARDWARE
• CPU
• CPUs mais rápidas são melhores do que mais CPUs
• 64bits com SOs de 64bits
• I/O: discos mais rápidos
• Mais memória
quarta-feira, 6 de julho de 2011
26. PARTICIONAMENTO
• Particionamento lógico de tabelas
• Transparente ao usuário
• Fácil manutenção
• Melhora da performance de queries
• Fácil gerenciamento de tabelas com muitos registros
• MySQL 5.1 e superiores
quarta-feira, 6 de julho de 2011
27. PARTICIONAMENTO
CREATE TABLE Employee ( emp_id INT AUTO_INCREMENT, fname VARCHAR
(50), lname VARCHAR(50), store_id TINYINT,
PRIMARY KEY (emp_id) ) ENGINE=MyISAM
PARTITION BY RANGE (emp_id) (
PARTITION p0 VALUES LESS THAN (10000),
PARTITION p1 VALUES LESS THAN (20000),
PARTITION p2 VALUES LESS THAN (30000),
PARTITION p3 VALUES LESS THAN (40000)
)
quarta-feira, 6 de julho de 2011
28. PARTICIONAMENTO
CREATE TABLE Employee ( emp_id INT AUTO_INCREMENT, fname VARCHAR
(50), lname VARCHAR(50), store_id TINYINT,
PRIMARY KEY (emp_id) ) ENGINE=MyISAM
PARTITION BY HASH (emp_id)
PARTITIONS 4;
quarta-feira, 6 de julho de 2011
29. ARQUITETURA
• Load Balancers
• Cache servers
• Bancos de dados Master/Slave, Sharding
• Scale‐Out Wins Over Scale‐Up
(escalar horizontalmente adicionando mais máquinas é melhor
do que verticalmente adicionando mais memória/CPU )
quarta-feira, 6 de julho de 2011
30. ARQUITETURA
• Dividir a carga entre servidores. As requisições de modificação
(INSERT, UPDATE,DELETE) podem ser enviadas para o
Master. Os dados são replicados para os Slaves. As requisições
de leitura (SELECT) são enviadas direto para os Slave
quarta-feira, 6 de julho de 2011
32. REPLICAÇÃO
Master
r/w
quarta-feira, 6 de julho de 2011
33. REPLICAÇÃO
Master
w
Slave Slave
r r
quarta-feira, 6 de julho de 2011
34. REPLICAÇÃO
Top
Master
w
Mensagens Amigos
r/w r/w
Top Top
Slave Slave
r r
quarta-feira, 6 de julho de 2011
35. REPLICAÇÃO
Top
Master
w
Mensagens Amigos
w w
Top Top
Slave Slave
Msg r r Amg
Slave Slave
r r
quarta-feira, 6 de julho de 2011
36. SHARDING
• Master-Slave tem o problema do tempo de sincronização.
Resposta: sharding.
• “Uma base de dados pode ser sharded por tabelas, dados
ou faixas (ranges). É similar ao particionamento, mas possui
algumas diferenças. Sharding envolve separar os dados em
máquinas fisicamente distintas, enquanto que
particionamento geralmente ocorre em mesmo hardware.
MySQL não suporta nativamente sharding, mas sim tabelas
particionadas, tabelas federadas (federated) e clusters.”
quarta-feira, 6 de julho de 2011
37. SHARDING
• Exemplo: um blog
• Você tem uma tabela com os posts do blog, com as colunas: id,
titulo, texto, data, autor_id
• autor_id é uma chave estrangeira (foreign key) com a tabela
usuarios
• Nós vamos dividir os posts do blog em duas bases de dados
• Posts cujo autor_id é par vão estar armazenados na base de
dados 1
• Posts cujo autor_id é ímpar vão estar armazenados na base de
dados 2
quarta-feira, 6 de julho de 2011
38. REFERÊNCIAS
• Alto Desempenho em MySQL. Editora Alta Books
• http://ha-mc.org/node/24
• http://dev.mysql.com/news-and-events/newsletter/2004-01/a0000000301.html
• http://architects.dzone.com/news/your-mysql-server-loaded
• http://www.dicas-l.com.br/dicas-l/20090511.php
• http://axonflux.com/mysql-sharding-for-5-billion-p
• http://www.jurriaanpersyn.com/archives/2009/02/12/database-sharding-at-netlog-with-mysql-and-
php/#databasesetup4
• http://www.hitk.com.br/?q=node/40
• http://www.plugmasters.com.br/sys/materias/888/1/Otimiza%E7%E3o-de-Aplica%E7%F5es-
MySQL---Parte-II
• http://www.mysqlperformanceblog.com/mysql-performance-presentations/
• http://josefernandes.pt/artigos/optimizar-mysql-linux
• http://www.mysqlperformanceblog.com/
• http://www.linux.com/archive/feature/41348
• http://ilkinbalkanay.blogspot.com/2010/03/load-testing-relational-databases-with.html
quarta-feira, 6 de julho de 2011