6
MySQL 5.6, o que há de novidade? By Wagner Bianchi – Senior Principal Consultant, LAD Wagner Bianchi é Senior Principal Consulting com atuação direta em trabalhos de consultoria e projetos em MySQL principalmente em clientes da América Latina. Com 8 anos de experiência em servidores de bancos de dados MySQL e ambientes Open Source, possui as certificações CMA, CMDEV, CMDBA e CMCDBA. Introdução Há pouco mais de um ano atrás, vimos a Oracle se pronunciar em uma palestra que foi chamada de State of Dolphin , na qual Edward Screven fez o lançamento oficial do MySQL 5.5 e comentou sobre o futuro do servidor de bancos de dados popular open source mais popular do mundo. Hoje, temos prevista uma nova versão, a 5.6, que traz consigo grandes melhorias em relação à estratégias de otimização de performance, não só para ambientes que utilizam o InnoDB Plugin como principal Storage Engine, mas abrangentes também a outros motores como MyISAM, Archive e outros. No quesito escalabilidade, o MySQL 5.6 oferecerá recursos que trarão ainda mais estabilidade na utilização da replicação assíncrona ou semi-síncrona com Storage Engines transacionais. Temos que frisar que, é notório que com o MySQL sob o desenvolvimento da Oracle, os times de desenvolvimento, consultoria , suporte , treinamento e comercialização da versão enterprise do produto se tornaram mais organizados, prontos para atender ao cliente e hoje já estão presentes na maior parte dos países do mundo, com o intuito de fazer com que haja a entrega de um MySQL cada vez melhor para os usuários e empresas que desejam ter um menor TCO e condições plenas de desmistificar a utilização deste poderoso servidor de bancos de dados em ambiente corporativo. Para quem vêm acompanhando o desenvolvimento do MySQL sob a Oracle, viu que várias foram as novidades que o MySQL 5.5 apresentou e que agora são ainda mais evidenciadas para que melhores resultados sejam obtidos por seus clientes. A possibilidade de utilização do InnoDB Plugin, a criação de múltiplas instâncias de buffer-pool, a replicação semi-síncrona , adoção de um banco de dados de metadados relacionados à performance, podendo ser utilizado para monitorar o servidor de bancos

MySQL 5.6, o que há de novidade?

Embed Size (px)

DESCRIPTION

Wagner Bianchi é Senior Principal Consulting com atuação direta emtrabalhos de consultoria e projetos em MySQL principalmente emclientes da América Latina. Com 8 anos de experiência em servidores debancos de dados MySQL e ambientes Open Source, possui ascertificações CMA, CMDEV, CMDBA e CMCDBA.

Citation preview

Page 1: MySQL 5.6, o que há de novidade?

MySQL 5.6, o que há de novidade?

By Wagner Bianchi – Senior Principal Consultant, LAD

Wagner Bianchi é Senior Principal Consulting com atuação direta em

trabalhos de consultoria e projetos em MySQL principalmente em

clientes da América Latina. Com 8 anos de experiência em servidores de

bancos de dados MySQL e ambientes Open Source, possui as

certificações CMA, CMDEV, CMDBA e CMCDBA.

Introdução

Há pouco mais de um ano atrás, vimos a Oracle se pronunciar em uma palestra que foi chamada

de State of Dolphin, na qual Edward Screven fez o lançamento oficial do MySQL 5.5 e comentou

sobre o futuro do servidor de bancos de dados popular open source mais popular do mundo. Hoje,

temos prevista uma nova versão, a 5.6, que traz consigo grandes melhorias em relação à estratégias

de otimização de performance, não só para ambientes que utilizam o InnoDB Plugin como principal

Storage Engine, mas abrangentes também a outros motores como MyISAM, Archive e outros.

No quesito escalabilidade, o MySQL 5.6 oferecerá recursos que trarão ainda mais estabilidade na

utilização da replicação assíncrona ou semi-síncrona com Storage Engines transacionais. Temos

que frisar que, é notório que com o MySQL sob o desenvolvimento da Oracle, os times de

desenvolvimento, consultoria, suporte, treinamento e comercialização da versão enterprise do

produto se tornaram mais organizados, prontos para atender ao cliente e hoje já estão presentes na

maior parte dos países do mundo, com o intuito de fazer com que haja a entrega de um MySQL cada

vez melhor para os usuários e empresas que desejam ter um menor TCO e condições plenas de

desmistificar a utilização deste poderoso servidor de bancos de dados em ambiente corporativo.

Para quem vêm acompanhando o desenvolvimento do MySQL sob a Oracle, viu que várias foram as

novidades que o MySQL 5.5 apresentou e que agora são ainda mais evidenciadas para que melhores

resultados sejam obtidos por seus clientes. A possibilidade de utilização do InnoDB Plugin, a criação

de múltiplas instâncias de buffer-pool, a replicação semi-síncrona, adoção de um banco de dados de

metadados relacionados à performance, podendo ser utilizado para monitorar o servidor de bancos

Page 2: MySQL 5.6, o que há de novidade?

de dados com base em instrumentos e agora, agregando a isso, todas novidades que são

desenvolvidas e entregues ao mercado através da nova versão, o MySQL 5.6.

Focando então a nova versão do produto, o MySQL 5.6, contamos com as seguintes melhorias

previstas:

• Melhorias no otimizador de consultas com Index Condition Pushdown;

• Melhorias no Kernel do InnoDB aumento de throughput;

• Novo estilo NoSQL com a API MEMCACHED;

• Melhorias no suporte ao particionamento de tabelas;

• Melhorias no modelo de replicação de dados entre servidores;

• Melhorias para o monitoramento de performance através do PERFORMANCE_SCHEMA;

Mais performance Index Condition Pushdown

Assim como foi desenvolvido primeiro com o MySQL Cluster nas versões atuais (este que é um

outro produto que tem sua nova versão, a 7.2, prevista para ser entregue bem em breve), o recurso

denominado Engine Condition Pushdown também foi desenvolvido para o MySQL Server.

Com um nome um pouquinho diferente, no MySQL Server o recurso é conhecido como Index

Condition Pushdown ou ICP e é responsável por fazer com os dados sejam recuperados de tabelas

com a utilização de pelo menos um índice. Normalmente, os dados são lidos com base na existência

de um índice, os dados são retornados para a primeira camada do servidor de bancos de dados

MySQL e na seqüência, a condição WHERE da consulta é aplicada aos dados. Com a utilização do

ICP, ou Index Consition Pushdown, a cláusula WHERE é aplicada aos efetuar a leitura do índice,

possibilitando uma menor litura dos dados com base no índice utilizado e menor tráfego interno de

dados.

Como sabemos, a arquitetura do servidor de bancos de dados MySQL prevalece esse tipo de

operação, pois, na primeira camada estão localizados os módulos de parse, transformação

otimização e outros. Após uma query passar por todos estes módulos e entrar em processo de

execução, o WHERE é enviado para a segunda camada com a intenção de ler somente os dados que

satisfação tal condição. Assim, bem menos dados serão retornados para a primeira camada do

MySQL e estes, entregues aos programa cliente (e também sendo armazenado no MySQL Query

Cache, se este estiver habilitado).

Uma diferença básica entre o método tradicional pode ser analisado com o seguinte análise:

Page 3: MySQL 5.6, o que há de novidade?

Método Tradicional Método utilizando Index Condition Pushdown

1. Busca-se a primeira linha do índice e

através da primeira linha recupera-se

toda a tabela;

2. Aplica-se a condição WHERE para

filtrar os dados recuperados;

3. Os dados que são verdade em relação à

condição WHERE são retornados para o

usuário e o restante é descartado;

1. Busca-se a primeira linha do índice, mas

não recupera a tabela toda;

2. Para cada linha já faz a comparação com

a expressão do WHERE e adiciona o que

for verdade ou conjunto verdade;

3. Retorna o conjunto verdade para o

requisitante;

NoSQL com a API MEMCACHED

Uma grande novidade e que é muito aguardada para começar a ser tão logo utilizada é a

possibilidade de utilização de uma interface direta com o InnoDB, ou seja, a partir do MySQL 5.6

será possível que web services acessem diretamente os dados do InnoDB sem passar por

transformações da linguagem utilizada em SQL – reforçando o estilo NoSQL que vêm tendo muito

destaque quando o assunto é aumentar o throughput, response time e a alta-disponibilidade,

diminuindo a latência, deixando os principais componentes de hardware à disposição dos módulos

que armazenam os dados de maneira não estruturada.

Os dados passam a ser armazenados também em uma estrutura denominada MEMCACHED que é

um módulo que persiste dados já utilizados em uma área de memória privilegiada, denominada

cache. Utilizando tal estrutura, o MEMCACHED, que agora é disponibilizada em forma de API,

desenvolvedores e administradores de bancos de dados poderão se beneficiar das seguintes

formas:

• Ausência da necessidade de desenvolvimento de nova aplicação para persistência,

reutilizando todo o esforço de desenvolvimento já aplicado ao MEMCACHED;

• Aproveitamento de toda a flexibilidade da plataforma que provê máxima performance e

suporte à vários ambientes;

• Extensão das funcionalidades do MEMCACHED com a intenção de este se enquadre nos

esquema ACID, suportado pelo InnoDB, assim como suporte aos módulos de crash-safe e

persistência de dados;

Page 4: MySQL 5.6, o que há de novidade?

O mais interessante é saber que as peças vão sendo conectadas no mundo Open Source em

detrimento aos que a própria Oracle atualmente tem enfatizado, todos os softwares são produzidos

juntos, integrados e testados juntos com a intenção de prover boa tecnologia, com baixo custo de

propriedade – TCO. Para aqueles que querem saber mais, o MySQL Cluster 7.2, nova versão prevista

para ser entregue em breve para ambiente de produção, já possui a MEMCACHED API, sendo

utilizada para persistência de dados em memória nos Data/Storage Nodes.

Um snapshot interessante do lado interno da integração entre o MySQL 5.6 o o chamado “NoSQL

Style”, publicada no site da InnoDB (antiga InnoBase Oy), empresa de propriedade da Oracle desde

2005, que desenvolve o InnoDB built-in e o InnoDB Plugin:

Melhorias no suporte ao particionamento de tabelas

Uma dos recursos que eu mais gostei quando foi lançado no MySQL 5.1 foi realmente o

particionamento de tabelas, particionamento este que é realizado de forma horizontal. Escrevi

bastante sobre este recurso para a revista SQL Magazine e para alguns blogs pela internet,

relatando sobre a versatilidade do recurso e pela possibilidade de selecionar pequenas porções de

dados em meio à tabelas com grandes quantidade de dados. Um dos recursos valiosos dentro do

particionamento de tabelas é denominado Partition Pruning, que possibilita que, por exemplo, você

trabalhe com a cláusula WHERE para que somente os dados localizados em uma das partições

Page 5: MySQL 5.6, o que há de novidade?

sejam retornadas, sendo que as linhas são procuradas em uma só partição. Isso combinado com o

recursos Index Condition Pushdown revelará a você usuário uma grande possibilidade de otimização

do tempo de resposta em relação à consultas SELECT, UPDATE, REPLACE e DELETE.

Com o MySQL 5.6, os recursos foram estendidos e agora é possível indicar explicitamente dentro da

consulta SELECT, qual a partição será utilizada para recuperar dados. Se o usuário sabe que a

partição “p3” abriga dados que satisfação uma condição, esta poderá ser indicada de maneira

explícita e os dados que estão nesta partição somente serão retornados, como no exemplo abaixo:

mysql> create table t1 (a int)

-> partition by key(a)

-> partitions 3; # criou-se partições p0,p1,p2

Query OK, 0 rows affected (0.10 sec)

mysql> insert into t1 values (1),(2);

Query OK, 3 rows affected (0.13 sec)

Records: 3 Duplicates: 0 Warnings: 0

mysql> select a from t1 partition(p1);

+------+

| a |

+------+

| 1 |

+------+

1 row in set (0.03 sec)

Além de poder explicitar na consulta qual é a partição como exibido anteriormente, trazer um

conjunto de dados para uma nova tabela ou mesmo exportar de uma para outra através do

comando ALTER TABLE ... EXCHANGE PARTITION.

Conclusão

Ao passo que novidades forem sendo liberadas pela turma de desenvolvimento, pois, o MySQL 5.6

ainda está no seu milestone 5 e ainda não está completamente desenvolvido e não é interessante

colocá-lo em produção. Alguns outros recursos como melhorias no esquema de replicação são

muito preciosos e também muito aguardados e fazem parte também dos recursos que quero

comentar separadamente pois se fosse comentado aqui, teríamos um artigo muito grande.

Detalhes técnicos do artigo

Page 6: MySQL 5.6, o que há de novidade?

Este artigo fora desenvolvido por Wagner Bianchi, que é Senior Principal Consulting, em laboratório

próprio com o intuito de informar aos usuários que compõem não só a comunidade de usuários do

MySQL, mas toda a comunidade de usuários de software Open Source, dos recursos os quais a

empresa Oracle Corporation têm desenvolvido para a nova versão do servidor de bancos de dados

Open Source mais popular do mundo.

Software utilizados:

• Virtual Machine nomeada MySQL-5-6, utilizando VirtualBox;

• MySQL 5.6 baixado do site dev.mysql.com/downloads;

• CentOS 5.5 como Sistema Operacional;