MySQL 5.6 com memcached

57
Airton Lastori [email protected] dez-2011 MySQL 5.6 com recursos NoSQL

description

Descubra as novidades da versão 5.6 do banco de dados open source mais popular do mundo!

Transcript of MySQL 5.6 com memcached

Page 1: MySQL 5.6 com memcached

<Insert Picture Here>

Airton Lastori [email protected]

dez-2011

MySQL 5.6 com

recursos NoSQL

Page 2: MySQL 5.6 com memcached

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.

Page 3: MySQL 5.6 com memcached

agenda

MySQL na Oracle

MySQL Server 5.6 com NoSQL

Roadmap: o que vem por aí

Page 4: MySQL 5.6 com memcached

agenda

MySQL na Oracle

MySQL Server 5.6 com NoSQL

Roadmap: o que vem por aí

Page 6: MySQL 5.6 com memcached

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

Page 7: MySQL 5.6 com memcached

...além de manter times de engenharia, suporte,

consultoria, evolução dos produtos open source e

comerciais, certificações...

A Oracle está comprometida com o MySQL

Page 8: MySQL 5.6 com memcached

Set your ambitions high!

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

Page 9: MySQL 5.6 com memcached

Indicado para empresas ou pessoas físicas que pretendem

aumentar produtividade, diminuir riscos e explorar mais a

fundo as capacidades do MySQL.

Oracle Premier Lifetime Support

MySQL Enterprise Edition

Oracle Product Certifications

MySQL Enterprise High Availability

MySQL Enterprise Security

MySQL Enterprise Scalability

MySQL Enterprise Backup

MySQL Enterprise Monitor/Query Analyzer

MySQL Workbench

Page 10: MySQL 5.6 com memcached

Abril 2010 Julho 2010 Dezembro 2010 Junho 2011

• Workbench 5.2

• Server 5.5

• Enterprise Backup 3.5

• Enterprise Monitor 2.3

• Cluster Manager 1.1

Outubro 2011

• Enterprise Monitor 2.2

• Cluster 7.1

• Cluster Manager 1.0

• Enterprise Backup 3.6

• Oracle VM Template

for MySQL Enterprise

*Development Milestone Release

Server 5.6

Cluster 7.2

DMR* & MySQL

Labs Early Access

Releases

Inovação acelerada do MySQL

• Plug-Ins Commercial

Extensions

• Certifications: Oracle

Fusion & Win Cluster

Page 11: MySQL 5.6 com memcached

Abril 2010 Julho 2010 Dezembro 2010 Junho 2011

• Workbench 5.2

• Server 5.5

• Enterprise Backup 3.5

• Enterprise Monitor 2.3

• Cluster Manager 1.1

Outubro 2011

• Enterprise Monitor 2.2

• Cluster 7.1

• Cluster Manager 1.0

• Enterprise Backup 3.6

• Oracle VM Template

for MySQL Enterprise

*Development Milestone Release

Server 5.6

Cluster 7.2

DMR* & MySQL

Labs Early Access

Releases

Inovação acelerada do MySQL

• Plug-Ins Commercial

Extensions

• Certifications: Oracle

Fusion & Win Cluster

Page 12: MySQL 5.6 com memcached

MySQL 5.5 SysBench Benchmarks

Intel Xeon X7460 x86_64

4 CPU x 6 Cores/CPU

2.66 GHz, 32GB RAM

Fedora 10

MySQL 5.1.40 (InnoDB built-in)

MySQL 5.1.40 (InnoDB Plug-in)

MySQL 5.5.4 (New InnoDB)

200% ganho de desempenho para MySQL 5.5 sobre 5.1.40

Page 13: MySQL 5.6 com memcached

MySQL 5.5 SysBench Benchmarks

MySQL 5.1.40 (InnoDB built-in)

MySQL 5.1.40 (InnoDB Plug-in)

MySQL 5.5.4 (New InnoDB)

Intel Xeon X7460 x86_64

4 CPU x 6 Cores/CPU

2.66 GHz, 32GB RAM

Fedora 10

364% ganho de desempenho para MySQL 5.5 sobre 5.1.40

Page 14: MySQL 5.6 com memcached

MySQL 5.1.50

(InnoDB built-in)

MySQL 5.1.50

(InnoDB Plug-in)

MySQL 5.5.6

(New InnoDB)

SysBench Benchmark

Intel x86_64

4 CPU x 2 Cores/CPU

3.166 GHz, 8GB RAM

Windows Server 2008

540% ganho de performance para MySQL 5.5 sobre 5.1.40

MySQL 5.5 no Windows

Page 15: MySQL 5.6 com memcached

MySQL 5.5 no Windows

MySQL 5.1.50

(InnoDB built-in)

MySQL 5.1.50

(InnoDB Plug-in)

MySQL 5.5.6

(New InnoDB)

SysBench Benchmark

Intel x86_64

4 CPU x 2 Cores/CPU

3.166 GHz, 8GB RAM

Windows Server 2008

1560% ganho de performance para MySQL 5.5 sobre 5.1.40

Page 16: MySQL 5.6 com memcached

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

Page 17: MySQL 5.6 com memcached

Abril 2010 Julho 2010 Dezembro 2010 Junho 2011

• Workbench 5.2

• Server 5.5

• Enterprise Backup 3.5

• Enterprise Monitor 2.3

• Cluster Manager 1.1

Outubro 2011

• Enterprise Monitor 2.2

• Cluster 7.1

• Cluster Manager 1.0

• Enterprise Backup 3.6

• Oracle VM Template

for MySQL Enterprise

*Development Milestone Release

Server 5.6

Cluster 7.2

DMR* & MySQL

Labs Early Access

Releases

Inovação acelerada do MySQL

• Plug-Ins Commercial

Extensions

• Certifications: Oracle

Fusion & Win Cluster

Page 18: MySQL 5.6 com memcached

Extensões Comerciais

• Enterprise Security • Plug-In: MySQL External Authentication

• Enterprise Scalability • Plug-In: MySQL Thread Pool

Page 19: MySQL 5.6 com memcached

Windows Authentication

Connector

Connect as

1. MyDomain\joe faz login

na aplicação com senha

Windows

Connected

Authenticate

CREATE USER win_joe

IDENTIFIED WITH authentication_windows

AS ‘joe';

App

LDAP/AD Windows

Auth

Connect as

2. MyDomain\joe é

autenticado via

LDAP/AD Connect as

4. Tokens são verificados, o

usuário win_joe é autenticado

com Windows login, porém

com privilégios do MySQL.

Connect as

3. A aplicação conecta-se

ao MySQL com usuário

win_joe.

Page 20: MySQL 5.6 com memcached

Gestão Padrão do Thread Pool

Clientes Internos

Gestão Padrão

doThread Pool

Conexões /

Declarações

atribuídas aos

Threads durante

sua existência

Execução das Conexões das Threads

Clientes Externos

• 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)

Page 21: MySQL 5.6 com memcached

Com o Thread Pool Habilitado

Clientes Internos

Clientes Externos

Thread Pool

Grupo Thread 1

Threads 1 - 4096

Grupo Thread 2

Threads 4097 - 8193

Grupo Thread N

Threads 8194 - N

Grupo Thread 1

Grupo Thread 2

Grupo Thread N

• 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

Execução das Conexões das Threads

Page 22: MySQL 5.6 com memcached

MySQL Enterprise Edition

ComThread Pool

MySQL Community Server

SemThread Pool

3x Melhor Escalabilidade com Thread Pool

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

2 X LSI SCSI Disk (MR9261-8i) (597GB)

0

2.000

4.000

6.000

8.000

10.000

12.000

T

Conexões Simultâneas no Banco de Dados

MySQL 5.5 Sysbench OLTP Apenas Leitura

Comparativo com/sem Thread Pool

Page 23: MySQL 5.6 com memcached

MySQL Enterprise Edition

ComThread Pool

MySQL Community Server

Sem Thread Pool

Comparativo com/sem Thread Pool

20x Melhor Escalabilidade comThread Pool

0

1.000

2.000

3.000

4.000

5.000

6.000

7.000

8.000

Tra

ns

õe

s p

or

se

gu

nd

o

Conexões Simultâneas no Banco de Dados

MySQL 5.5 Sysbench OLTP Leitura/Escrita

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

2 X LSI SCSI Disk (MR9261-8i) (597GB)

Page 24: MySQL 5.6 com memcached

Abril 2010 Julho 2010 Dezembro 2010 Junho 2011

• Workbench 5.2

• Server 5.5

• Enterprise Backup 3.5

• Enterprise Monitor 2.3

• Cluster Manager 1.1

Outubro 2011

• Enterprise Monitor 2.2

• Cluster 7.1

• Cluster Manager 1.0

• Enterprise Backup 3.6

• Oracle VM Template

for MySQL Enterprise

*Development Milestone Release

Server 5.6

Cluster 7.2

DMR* & MySQL

Labs Early Access

Releases

Inovação acelerada do MySQL

• Plug-Ins Commercial

Extensions

• Certifications: Oracle

Fusion & Win Cluster

Page 25: MySQL 5.6 com memcached

agenda

MySQL na Oracle

MySQL Server 5.6 com NoSQL

Roadmap: o que vem por aí

Page 26: MySQL 5.6 com memcached

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

MySQL 5.6: um MySQL ainda melhor!

Page 27: MySQL 5.6 com memcached

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

MySQL 5.6: um MySQL ainda melhor!

Page 28: MySQL 5.6 com memcached

Development Milestone Releases

Page 29: MySQL 5.6 com memcached

MySQL Labs: Early Access

labs.mysql.com

Page 30: MySQL 5.6 com memcached

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

opções NotOnlySQL com memcached

MySQL 5.6: um MySQL ainda melhor!

Server 5.6.3 Development

Milestone Release

Labs Early Access

Labs Early Access

Page 31: MySQL 5.6 com memcached

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

opções NotOnlySQL com memcached

MySQL 5.6: um MySQL ainda melhor!

Server 5.6.3 Development

Milestone Release

Labs Early Access

Labs Early Access

Page 32: MySQL 5.6 com memcached

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.

Page 33: MySQL 5.6 com memcached

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

Page 34: MySQL 5.6 com memcached

3. melhor throughput de transações InnoDB no MySQL 5.6.3

• Novas tabelas no INFORMATION_SCHEMA: Metrics, System, Buffer Pool

• Melhor informação dos internals do InnoDB

• Status da transação

• Locking

• Buffer pool

• Estatísticas de I/O de página

• Dicionário de dados

• Contadores de performance

• Thread scheduling melhorado

• Detecção de deadlock não-recursiva

• Flushing de LRU melhorado

• Checksum rápido

• Tablespace(s) separado para Undo Log

• Dump & Restore de Buffer Pool

• Aumento do tamanho máximo do Redo Log

• Collation Ids de 2-bytes

• Maior limite para index key prefixes (3072 bytes)

• Contenção reduzida durante file extension

Page 35: MySQL 5.6 com memcached

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

Page 36: MySQL 5.6 com memcached

1. melhor performance, escalabilidade

Optmizer

2. melhor instrumentação

Performance Schema

3. melhor throughput nas transações

InnoDB

4. maior disponibilidade, integridade

Replicação

5. mais flexibilidade, menor complexidade

opções NotOnlySQL com memcached

MySQL 5.6: um MySQL ainda melhor!

E mais, ainda na 5.6.3

• melhorias IPv6

• suporte Unicode para Windows client

• import/export de tabelas de/para partições

• seleção explícita de partição

• GIS/MyISAM: mais precisão em operações

Page 37: MySQL 5.6 com memcached

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

opções NotOnlySQL com memcached

MySQL 5.6: um MySQL ainda melhor!

Server 5.6.3 Development

Milestone Release

Labs Early Access

Labs Early Access

Page 38: MySQL 5.6 com memcached

Early Access

• InnoDB

• InnoDB – menores page

sizes de 4k e 8k

• InnoDB - Full-text Search

• Replicação

• Global Transaction IDs

• Binlog API

• Binlog Group Commit

• Opções “NotOnlySQL”

acessando InnoDB

Em desenvolvimento

• Escalabilidade Multi-core

• Otimizações de Subquery

• Saída EXPLAIN estruturada

• Mais operações Online: add,

rebuild indexes

• Otimizações para SSD, suporte e

orientação para tuning

• Metadata para InnoDB

tablespaces para portabilidade

• TIME, TIMESTAMP, DATETIME:

precisão fracional

Mais (em breve)…

MySQL: Early Access, em desenvolvimento

Page 39: MySQL 5.6 com memcached

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

opções NotOnlySQL com memcached

MySQL 5.6: um MySQL ainda melhor!

Labs Early Access

Server 5.6.3 Development

Milestone Release

Labs Early Access

Page 40: MySQL 5.6 com memcached

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

Page 41: MySQL 5.6 com memcached

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

Performance for web-based services

for Non-structured data stores and

with horizontal Scalability.

como definido em 2009

por quê???

Page 42: MySQL 5.6 com memcached
Page 43: MySQL 5.6 com memcached

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

Page 44: MySQL 5.6 com memcached

Memcached também é...

uma Hash Table GIGANTE

pode ser distribuída entre vários servidores

reside somente na RAM disponível

Last Recently Used

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

... 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

Page 45: MySQL 5.6 com memcached

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

• Memcached daemon plug-in to mysqld

• Memcached protocol mapped to the native InnoDB API

• Shared process space for ultra-low latency

InnoDB Storage Engine

MySQL Server Memcached

plugin

Application

SQL

MySQL Client

NoSQL

Memcached Protocol

mysqld

Page 46: MySQL 5.6 com memcached

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

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

porque...

Page 47: MySQL 5.6 com memcached

5. mais flexibilidade, menor complexidade NoSQL com MySQL 5.6

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

também porque...

Page 48: MySQL 5.6 com memcached

agenda

MySQL na Oracle

MySQL Server 5.6 com NoSQL

Roadmap: o que vem por aí

Page 49: MySQL 5.6 com memcached

• 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

Goals Roadmap: MySQL Database

Page 50: MySQL 5.6 com memcached

• 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

Roadmap: MySQL Cluster Goals

Page 51: MySQL 5.6 com memcached

• MySQL Enterprise Security

• MySQL Database Auditing extension

• Oracle Product Certifications

• Oracle Database Firewall

• Oracle Audit Vault

• MySQL Enterprise Monitor

• Evolve into management

• Instance, Backup, Replication\HA

• Integration with Oracle Enterprise Manager

Roadmap: MySQL Enterprise Edition 1/2 Goals

Page 52: MySQL 5.6 com memcached

• 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

Roadmap: MySQL Enterprise Edition 2/2 Goals

Page 53: MySQL 5.6 com memcached

Mais sobre MySQL

Page 54: MySQL 5.6 com memcached

MySQL Treinamento e Certificação

MySQL Boot Camp

Accelerated

MySQL Performance

Tuning Boot Camp

Accelerated

MySQL for Begginers

MySQL for Database

Administrators

MySQL Performance

Tuning

MySQL High

Availability

MySQL Cluster

MySQL DBA

MySQL Boot Camp

Accelerated

MySQL for Developers

MySQL Performance

Tuning Boot Camp

Accelerated

MySQL for Begginers

MySQL and PHP

Developing Dynamic

Web Applicationg

MySQL Advanced

Stored Procedures

MySQLDeveloper

http://education.oracle.com

Treinamentos

Certificações

Opcional

Necessário

Page 55: MySQL 5.6 com memcached

Downloads & Trials

dev.mysql.com

labs.mysql.com

edelivery.oracle.com

Documentação, Blogs & Fóruns

dev.mysql.com/doc

planet.mysql.com

forums.mysql.com

Artigos & Casos de Sucesso

mysql.com/why-mysql/white-papers

mysql.com/customers

Links

Page 56: MySQL 5.6 com memcached

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!

Page 57: MySQL 5.6 com memcached

Obrigado!

Time MySQL Brasil

[email protected] [email protected] [email protected] [email protected]

@MySQLBR meetup.com/MySQL-BR