Architecture and Design MySQL powered applications by Peter Zaitsev Meetup Sa...
MySQL 5.6 com recursos NoSQL
1. MySQL 5.6 com
<Insert Picture Here>
recursos NoSQL
Airton Lastori
airton.lastori@oracle.com
dez-2011
2. Disclaimer
The preceding is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any material,
code, or functionality, and should not be relied upon in
making purchasing decisions. The development, 2
release, and timing of any features or functionality
described for Oracle’s products remains at the sole
discretion of Oracle.
3. agenda
MySQL na Oracle
MySQL Server 5.6 com NoSQL
Roadmap: o que vem por aí
4. agenda
MySQL na Oracle
MySQL Server 5.6 com NoSQL
Roadmap: o que vem por aí
6. Suporte Oracle ao Open Source/Standards
MySQL & InnoDB, Linux, Java, GlassFish, NetBeans,
Eclipse, PHP, Apache, Berkeley DB, VirtualBox, Xen…
http://www.oracle.com/us/technologies/open-source
7. A Oracle está comprometida com o MySQL
...além de manter times de engenharia, suporte,
consultoria, evolução dos produtos open source e
comerciais, certificações...
8. MySQL Open Source (GPL)
• MySQL Database (Community Server) 5.5.18 e 5.6.3 DMR
• MySQL Cluster (NDB Community) 7.1.17 e 7.2.1b DMR
• MySQL Workbench Community Edition
• MySQL Utilities (em Python)
• MySQL Connectors
• MySQL Proxy
• Documentação: livre para uso, não coberto pela GPL
• Forums
dev.mysql.com/downloads
Set your ambitions high!
9. MySQL Enterprise Edition
Indicado para empresas ou pessoas físicas que pretendem
aumentar produtividade, diminuir riscos e explorar mais a
fundo as capacidades do MySQL.
MySQL Enterprise MySQL Enterprise
Backup Monitor/Query Analyzer
MySQL Enterprise
High Availability MySQL Workbench
MySQL Enterprise Oracle Product
Scalability Certifications
MySQL Enterprise Oracle Premier
Lifetime Support
Security
10. Inovação acelerada do MySQL
• Plug-Ins Commercial
Extensions
• Certifications: Oracle
Fusion & Win Cluster
• Enterprise Backup 3.6
• Oracle VM Template
for MySQL Enterprise
• Server 5.5
• Enterprise Backup 3.5
• Enterprise Monitor 2.3
• Cluster Manager 1.1
• Workbench 5.2 Server 5.6
Cluster 7.2
• Enterprise Monitor 2.2
DMR* & MySQL
• Cluster 7.1 Labs Early Access
• Cluster Manager 1.0 Releases
Abril 2010 Julho 2010 Dezembro 2010 Junho 2011 Outubro 2011
*Development Milestone Release
11. Inovação acelerada do MySQL
• Plug-Ins Commercial
Extensions
• Certifications: Oracle
Fusion & Win Cluster
• Enterprise Backup 3.6
• Oracle VM Template
for MySQL Enterprise
• Server 5.5
• Enterprise Backup 3.5
• Enterprise Monitor 2.3
• Cluster Manager 1.1
• Workbench 5.2 Server 5.6
Cluster 7.2
• Enterprise Monitor 2.2
DMR* & MySQL
• Cluster 7.1 Labs Early Access
• Cluster Manager 1.0 Releases
Abril 2010 Julho 2010 Dezembro 2010 Junho 2011 Outubro 2011
*Development Milestone Release
12. MySQL 5.5 SysBench Benchmarks
MySQL 5.5.4
(New InnoDB)
MySQL 5.1.40
(InnoDB Plug-in)
MySQL 5.1.40
(InnoDB built-in)
200% ganho de desempenho Intel Xeon X7460 x86_64
4 CPU x 6 Cores/CPU
para MySQL 5.5 sobre 5.1.40 2.66 GHz, 32GB RAM
Fedora 10
13. MySQL 5.5 SysBench Benchmarks
MySQL 5.5.4
(New InnoDB)
MySQL 5.1.40
(InnoDB Plug-in)
MySQL 5.1.40
(InnoDB built-in)
364% ganho de desempenho Intel Xeon X7460 x86_64
4 CPU x 6 Cores/CPU
2.66 GHz, 32GB RAM
para MySQL 5.5 sobre 5.1.40 Fedora 10
14. MySQL 5.5 no Windows
MySQL 5.5.6
(New InnoDB)
MySQL 5.1.50
(InnoDB Plug-in)
MySQL 5.1.50
(InnoDB built-in)
SysBench Benchmark
540% ganho de performance Intel x86_64
4 CPU x 2 Cores/CPU
3.166 GHz, 8GB RAM
para MySQL 5.5 sobre 5.1.40 Windows Server 2008
15. MySQL 5.5 no Windows
MySQL 5.5.6
(New InnoDB)
MySQL 5.1.50
(InnoDB Plug-in)
MySQL 5.1.50
(InnoDB built-in)
SysBench Benchmark
1560% ganho de performance Intel x86_64
4 CPU x 2 Cores/CPU
3.166 GHz, 8GB RAM
para MySQL 5.5 sobre 5.1.40 Windows Server 2008
16. InnoDB no MySQL
• Storage Engine mais utilizado em:
• aplicações Web 2.0
• aplicações de varejo
• aplicações de entretenimento & mídia
• ACID
• Crash recovery
• Integridade referencial
• Suporta altos níveis de usuários concorrentes
• Na versão MySQL 5.5:
• padrão
• otimizado para hardware multi-core, multi-thread e SOs
17. Inovação acelerada do MySQL
• Plug-Ins Commercial
Extensions
• Certifications: Oracle
Fusion & Win Cluster
• Enterprise Backup 3.6
• Oracle VM Template
for MySQL Enterprise
• Server 5.5
• Enterprise Backup 3.5
• Enterprise Monitor 2.3
• Cluster Manager 1.1
• Workbench 5.2 Server 5.6
Cluster 7.2
• Enterprise Monitor 2.2
DMR* & MySQL
• Cluster 7.1 Labs Early Access
• Cluster Manager 1.0 Releases
Abril 2010 Julho 2010 Dezembro 2010 Junho 2011 Outubro 2011
*Development Milestone Release
18. Extensões Comerciais
• Enterprise Security
• Plug-In: MySQL External Authentication
• Enterprise Scalability
• Plug-In: MySQL Thread Pool
19. Windows Authentication
Connect as
1. MyDomainjoe faz login App
na aplicação com senha
Windows
Connector
Connect as Connect as
3. A aplicação conecta-se 2. MyDomainjoe é
ao MySQL com usuário autenticado via
win_joe. LDAP/AD
Connected 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';
20. 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ência
Clientes 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)
21. 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 - N
Clientes 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
22. Comparativo com/sem Thread Pool
MySQL 5.5 Sysbench OLTP Apenas Leitura
12.000
10.000 MySQL Enterprise Edition
ComThread Pool
8.000
6.000
T
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)
23. Comparativo com/sem Thread Pool
MySQL 5.5 Sysbench OLTP Leitura/Escrita
8.000
7.000
Transações por segundo
MySQL Enterprise Edition
6.000
ComThread Pool
5.000
4.000
3.000
2.000
1.000
MySQL Community Server
0
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)
24. Inovação acelerada do MySQL
• Plug-Ins Commercial
Extensions
• Certifications: Oracle
Fusion & Win Cluster
• Enterprise Backup 3.6
• Oracle VM Template
for MySQL Enterprise
• Server 5.5
• Enterprise Backup 3.5
• Enterprise Monitor 2.3
• Cluster Manager 1.1
• Workbench 5.2 Server 5.6
Cluster 7.2
• Enterprise Monitor 2.2
DMR* & MySQL
• Cluster 7.1 Labs Early Access
• Cluster Manager 1.0 Releases
Abril 2010 Julho 2010 Dezembro 2010 Junho 2011 Outubro 2011
*Development Milestone Release
25. agenda
MySQL na Oracle
MySQL Server 5.6 com NoSQL
Roadmap: o que vem por aí
26. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
2. melhor instrumentação
3. melhor throughput nas transações
4. maior disponibilidade, integridade de dados
5. mais flexibilidade, menor complexidade
27. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer
2. melhor instrumentação
Performance Schema
3. melhor throughput nas transações
InnoDB
4. maior disponibilidade, integridade de dados
Replicação
5. mais flexibilidade, menor complexidade de infra-estrutura
opções NotOnlySQL com memcached
30. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer
Server 5.6.3
2. melhor instrumentação Development
Performance Schema Milestone Release
3. melhor throughput nas transações Labs
Early Access
InnoDB
4. maior disponibilidade, integridade de dados
Replicação
5. mais flexibilidade, menor complexidade Labs
opções NotOnlySQL com memcached Early Access
31. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer
Server 5.6.3
2. melhor instrumentação Development
Performance Schema Milestone Release
3. melhor throughput nas transações Labs
Early Access
InnoDB
4. maior disponibilidade, integridade de dados
Replicação
5. mais flexibilidade, menor complexidade Labs
opções NotOnlySQL com memcached Early Access
32. 1. melhor performance, escalabilidade
Optimizer no MySQL 5.6.3
a. Otimizações na ordenação com limites pequenos
Ex: ORDER BY...LIMIT 100 (paginação Web App) = 3x mais rápido 20M linhas
b. Index Condition Pushdown
Ex: WHERE ... BETWEEN = de 1,40s para 0,09s num Buffer Pool de 1,5GB
c. Batched Key Access & Multi Range Read
Ex: Queries com JOIN disk-bound = aproximadamente 120x mais rápido
d. Postponed Materialization
Ex: Views/Subqueries no FROM; EXPLAIN = 240x mais rápido
e. EXPLAIN para INSERT, UPDATE & DELETE
Funcionalidade muito aguardada, mais recursos para otimização de escritas
f. Estatísticas persistentes do Optimizer
Estatísticas mais precisas, estáveis via ANALYZE
g. Optimizer Traces
Mostra como o plano foi gerado, pontos de decisão etc.
33. 2. melhor instrumentação
PERFORMANCE_SCHEMA no MySQL 5.6.3
Profiling & Tuning aperfeiçoado para BD e Aplicação
• Statements/Stages
• Quais queries mais custosas? Quando elas gastam tempo?
• Table/Index I/O, Table Locks
• Quais tabelas/índices causam maior carga e/ou contenção?
• Network I/O
• Qual o comportamento de carga de rege? Quanto tempo as sessões
ficam ociosas?
• Users/Hosts/Accounts
• Quais usuários/hosts/contas consomem mais recursos?
• Summaries
• Estatísticas agregadas, agrupadas por thread, user, host, account ou
object
34. 3. melhor throughput de transações
InnoDB no MySQL 5.6.3
• Novas tabelas no • Flushing de LRU melhorado
INFORMATION_SCHEMA: • Checksum rápido
Metrics, System, Buffer Pool
• Tablespace(s) separado para
• Melhor informação dos internals Undo Log
do InnoDB
• Dump & Restore de Buffer Pool
• Status da transação
• Aumento do tamanho máximo do
• Locking Redo Log
• Buffer pool • Collation Ids de 2-bytes
• Estatísticas de I/O de página • Maior limite para index key
• Dicionário de dados prefixes (3072 bytes)
• Contadores de performance • Contenção reduzida durante file
• Thread scheduling melhorado extension
• Detecção de deadlock não-
recursiva
35. 4. maior disponibilidade, integridade dos dados
Replicação no MySQL 5.6.3
Replicação elevada a outro nível
• Melhor integridade dos dados
• Crash-Safe Slaves, Replication Checksums, Crash-safe binlog
• Melhor performance
• Multi-threaded Slaves, tamanho do binlog reduzido para RBR
• Mais Flexibilidade
• Time-delayed replication
• Detecção de problemas simplificada
• Log da Query original para formato Row-based
• Gerenciamento e Monitoramente melhorado
• Server UUIDs, backup remoto do binlog
36. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer E mais, ainda na 5.6.3
• melhorias IPv6
2. melhor instrumentação
• suporte Unicode para
Performance Schema Windows client
• import/export de tabelas
3. melhor throughput nas transações de/para partições
InnoDB • seleção explícita de
partição
• GIS/MyISAM: mais
4. maior disponibilidade, integridade precisão em operações
Replicação
5. mais flexibilidade, menor complexidade
opções NotOnlySQL com memcached
37. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer
Server 5.6.3
2. melhor instrumentação Development
Performance Schema Milestone Release
3. melhor throughput nas transações Labs
Early Access
InnoDB
4. maior disponibilidade, integridade de dados
Replicação
5. mais flexibilidade, menor complexidade Labs
opções NotOnlySQL com memcached Early Access
38. MySQL: Early Access, em desenvolvimento
Em desenvolvimento
Early Access
• Escalabilidade Multi-core
• InnoDB • Otimizações de Subquery
• InnoDB – menores page • Saída EXPLAIN estruturada
sizes de 4k e 8k • Mais operações Online: add,
• InnoDB - Full-text Search rebuild indexes
• Replicação • Otimizações para SSD, suporte e
• Global Transaction IDs orientação para tuning
• Binlog API • Metadata para InnoDB
• Binlog Group Commit tablespaces para portabilidade
• TIME, TIMESTAMP, DATETIME:
• Opções “NotOnlySQL” precisão fracional
acessando InnoDB
Mais (em breve)…
39. MySQL 5.6: um MySQL ainda melhor!
1. melhor performance, escalabilidade
Optmizer
Server 5.6.3
2. melhor instrumentação Development
Performance Schema Milestone Release
3. melhor throughput nas transações Labs
Early Access
InnoDB
4. maior disponibilidade, integridade de dados
Replicação
5. mais flexibilidade, menor complexidade Labs
opções NotOnlySQL com memcached Early Access
41. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
por quê???
Performance for web-based services
for Non-structured data stores and
with horizontal Scalability.
como definido em 2009
42.
43. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
Memcached é...
API popular que “fala” NoSQL chave-valor.
Provê alta performance, especialmente para aplicações
web diminuindo a carga do banco de dados relacional
... usado por Twitter, Facebook, Zynga, Youtube
também suportado por Aplicações Empacotadas
populares como Joomla, Drupal e Wordpress
44. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
Memcached também é...
uma Hash Table GIGANTE
pode ser distribuída entre vários servidores
reside somente na RAM disponível
Last Recently Used
... realmente muito útil para alta-performance,
mas os dados não são duráveis, depende de lógica de
sincronização com BD e também de infra-estrutura adicional
45. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
Application
SQL NoSQL
MySQL Client Memcached Protocol
mysqld
Memcached
MySQL Server
plugin
InnoDB Storage Engine
• Memcached daemon plug-in to mysqld
• Memcached protocol mapped to the native InnoDB API
• Shared process space for ultra-low latency
46. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
porque...
Mais flexibilidade para o Desenvolvedor:
• Dados não estruturados, mas também Queries ricas SQL e
fulltext search nos valores
• Baixa latência, alto throughput sem transformações SQL
• Sem necessidade de implementar lógica de persistência
• Transações persistentes, crash-safe & ACID
• Sincronismo garantido pelo BD, consistência acessando via SQL
ou por chave
• Reuso de clientes memcached já existentes
• Compatível com drivers e bibliotecas para diversas plataformas
• Reduz esforço de desenvolvimento
47. 5. mais flexibilidade, menor complexidade
NoSQL com MySQL 5.6
também porque...
Menor complexidade e risco para o Administrador:
• Escalabilidade horizontal e replicação
• Mesma infra-estrutura, recursos NoSQL prontos para uso
• Camada única de dados, sem duplicação
• Ferramentas de monitoramento e administração
• Re-população automática do cache após indisponibilidade
• Reduz esforço de administração
• Tecnologia robusta e confiável
• Reduz risco de perda de dados e indisponibilidade
48. agenda
MySQL na Oracle
MySQL Server 5.6 com NoSQL
Roadmap: o que vem por aí
49. Roadmap: MySQL Database Goals
• Re-factored architecture
• Pluggable feature set
• Deprecate legacy “baggage”
• Real data dictionary (remove .frm files)
• Better Cloud, Hosting, SaaS features
• Auto-sharding, load balancing, automatic failover
• Online operations
• Multi-tenancy, schema/catalogs, resource control, “elastic
resources”
• Windows platform
• Continue improvements
50. Roadmap: MySQL Cluster Goals
• Ease of Use
• Tools for simplified configuration, provisioning & management
• Enhanced API Support
• New NoSQL Interfaces
• Richer SQL Functionality
• Performance & Capacity Increases
• Optimizations for latest hardware developments
• Wider Deployment Options
• Virtualization
• Cloud
51. Roadmap: MySQL Enterprise Edition 1/2 Goals
• MySQL Enterprise Security
• MySQL Database Auditing extension
• Oracle Product Certifications
• Oracle Database Firewall
• Oracle Audit Vault
• MySQL Enterprise Monitor
• Evolve into management
• Instance, Backup, ReplicationHA
• Integration with Oracle Enterprise Manager
52. Roadmap: MySQL Enterprise Edition 2/2 Goals
• MySQL Enterprise Backup
• Performance – parallel backups, skip empty pages, PK only options
• Efficiency, Ease of use
• Better PIT recovery
• Better master/slave synch on restore
• Cloning of complete prod, test, QA environments
• MySQL Workbench SE
• Schema/data migration from SQL Server
• ER Model Repository
• Code generation – PHP, Python
54. MySQL Treinamento e Certificação
Treinamentos
MySQL DBA MySQLDeveloper Certificações
MySQL Boot Camp MySQL Boot Camp
Accelerated Accelerated
MySQL Performance MySQL Performance
Tuning Boot Camp Tuning Boot Camp
Accelerated Accelerated
MySQL for Begginers MySQL for Begginers
MySQL for Database MySQL and PHP
Administrators Developing Dynamic
Web Applicationg
MySQL Performance
Tuning MySQL for Developers
MySQL High MySQL Advanced
Availability Stored Procedures
MySQL Cluster
Opcional
Necessário
http://education.oracle.com
56. Sumário
O MySQL 5.6 traz enormes melhorias e destacam-se 5 principais:
melhor performance e escalabilidade;
melhor instrumentação;
melhor throughput nas transações;
maior disponibilidade, integridade;
mais flexibilidade e menor complexidade com NoSQL.
Estas melhorias reforçam o compromisso Oracle com MySQL e
com a estratégia Open Source como modelo de negócio.
O MySQL é o Banco de Dados Open Source mais popular do
mundo e estamos trabalhando para um MySQL ainda melhor!
57. Obrigado!
Time MySQL Brasil
marcos.trujillo@oracle.com marcelo.t.souza@oracle.com ana.guiselini@oracle.com airton.lastori@oracle.com
@MySQLBR meetup.com/MySQL-BR