SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
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
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:
Método Tradicional                               Método utilizando Index Condition Pushdown
       1. Busca-se a primeira linha do índice e      1. Busca-se a primeira linha do índice, mas
          através da primeira linha recupera-se          não recupera a tabela toda;
          toda a tabela;                             2. Para cada linha já faz a comparação com
       2. Aplica-se a condição WHERE para                a expressão do WHERE e adiciona o que
          filtrar os dados recuperados;                  for verdade ou conjunto verdade;
       3. Os dados que são verdade em relação à      3. Retorna o conjunto verdade para o
          condição WHERE são retornados para o           requisitante;
          usuário e o restante é descartado;



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

Mais conteúdo relacionado

Mais procurados

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataRodrigo Almeida
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18tomascarol2
 
Cluster e replicação em banco de dados
Cluster e replicação em banco de dadosCluster e replicação em banco de dados
Cluster e replicação em banco de dadosSuissa
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6Wagner Bianchi
 
Windows 2003 guia_completo
Windows 2003 guia_completoWindows 2003 guia_completo
Windows 2003 guia_completocleanrail
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosValdir Junior
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Edisio Nascimento
 
Cluster ha com banco de dados
Cluster ha com banco de dadosCluster ha com banco de dados
Cluster ha com banco de dadosMarcio Jonnes
 
Mcsa 70 410 - portugues br
Mcsa 70 410 - portugues brMcsa 70 410 - portugues br
Mcsa 70 410 - portugues brAlisson Silva
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosDaniela Macedo
 
SAN: Storage Area Network
SAN: Storage Area NetworkSAN: Storage Area Network
SAN: Storage Area NetworkFernando Palma
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLMatheus Espanhol
 
Configurando o serviço dhcp no windows server 2012
Configurando o serviço dhcp no windows server 2012Configurando o serviço dhcp no windows server 2012
Configurando o serviço dhcp no windows server 2012Mario Kleber
 
Instalação do windows 2008 server
Instalação do windows 2008 serverInstalação do windows 2008 server
Instalação do windows 2008 serverAparicio Junior
 

Mais procurados (20)

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
Treinamento Data Guard
Treinamento Data GuardTreinamento Data Guard
Treinamento Data Guard
 
Oracle 11g
Oracle 11gOracle 11g
Oracle 11g
 
Apontamentos psi m18
Apontamentos psi m18Apontamentos psi m18
Apontamentos psi m18
 
Treinamento DBA Essential
Treinamento DBA EssentialTreinamento DBA Essential
Treinamento DBA Essential
 
Cluster e replicação em banco de dados
Cluster e replicação em banco de dadosCluster e replicação em banco de dados
Cluster e replicação em banco de dados
 
UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6UNIFAL - MySQL Logs - 5.0/5.6
UNIFAL - MySQL Logs - 5.0/5.6
 
Windows 2003 guia_completo
Windows 2003 guia_completoWindows 2003 guia_completo
Windows 2003 guia_completo
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de Dados
 
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
Silo.tips utilizando os-componentes-da-paleta-dbexpress-para-acesso-ao-banco-...
 
Cluster ha com banco de dados
Cluster ha com banco de dadosCluster ha com banco de dados
Cluster ha com banco de dados
 
Mcsa 70 410 - portugues br
Mcsa 70 410 - portugues brMcsa 70 410 - portugues br
Mcsa 70 410 - portugues br
 
Oracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de DadosOracle 11g – Inteligência em Banco de Dados
Oracle 11g – Inteligência em Banco de Dados
 
Treinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12cTreinamento RMAN Workshop 12c
Treinamento RMAN Workshop 12c
 
SAN: Storage Area Network
SAN: Storage Area NetworkSAN: Storage Area Network
SAN: Storage Area Network
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
Novidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQLNovidades da versão 9.0 do PostgreSQL
Novidades da versão 9.0 do PostgreSQL
 
Configurando o serviço dhcp no windows server 2012
Configurando o serviço dhcp no windows server 2012Configurando o serviço dhcp no windows server 2012
Configurando o serviço dhcp no windows server 2012
 
Instalação do windows 2008 server
Instalação do windows 2008 serverInstalação do windows 2008 server
Instalação do windows 2008 server
 

Destaque

UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6Wagner Bianchi
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksJaime Crespo
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016Wagner Bianchi
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6Wagner Bianchi
 

Destaque (6)

UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6UNIFAL - MySQL Transações - 5.0/5.6
UNIFAL - MySQL Transações - 5.0/5.6
 
UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6UNIFAL - MySQL Views - 5.0/5.6
UNIFAL - MySQL Views - 5.0/5.6
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 
UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6UNIFAL - MySQL Storage Engine - 5.0/5.6
UNIFAL - MySQL Storage Engine - 5.0/5.6
 

Semelhante a MySQL 5.6, o que há de novidade?

Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosAricelio Souza
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL Brasil
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL Brasil
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQLMySQL Brasil
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL Brasil
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaMySQL Brasil
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL Brasil
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaAugusto Giles
 
Apostila de sql basico
Apostila de sql basicoApostila de sql basico
Apostila de sql basicoFernando Palma
 
Introdução a data warehouse e olap
Introdução a data warehouse e olapIntrodução a data warehouse e olap
Introdução a data warehouse e olapFlavia Martins Bispo
 
Introdução a data warehouse e olap
Introdução a data warehouse e olapIntrodução a data warehouse e olap
Introdução a data warehouse e olapFernando Palma
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -MySQL Brasil
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLMySQL Brasil
 

Semelhante a MySQL 5.6, o que há de novidade? (20)

Sistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplosSistemas NoSQL, surgimento, características e exemplos
Sistemas NoSQL, surgimento, características e exemplos
 
MySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundoMySQL: o banco de dados open source mais popular do mundo
MySQL: o banco de dados open source mais popular do mundo
 
MySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundoMySQL - o banco de dados open source mais popular do mundo
MySQL - o banco de dados open source mais popular do mundo
 
Recursos e Benefícios do MySQL
Recursos e Benefícios do MySQLRecursos e Benefícios do MySQL
Recursos e Benefícios do MySQL
 
Material Seminário NoSQL
Material Seminário NoSQLMaterial Seminário NoSQL
Material Seminário NoSQL
 
MySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicaçõesMySQL no Windows: implementação eficiente de novas aplicações
MySQL no Windows: implementação eficiente de novas aplicações
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
C # banco de dados
C # banco de dadosC # banco de dados
C # banco de dados
 
Windows 2003 guia_completo
Windows 2003 guia_completoWindows 2003 guia_completo
Windows 2003 guia_completo
 
Serviços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e JavaServiços Escaláveis e de Alta Performance com MySQL e Java
Serviços Escaláveis e de Alta Performance com MySQL e Java
 
MySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de ProdutoMySQL para Desenvolvedores de Produto
MySQL para Desenvolvedores de Produto
 
NoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas MonografiaNoSQL Familia de Colunas Monografia
NoSQL Familia de Colunas Monografia
 
Apostila de sql basico
Apostila de sql basicoApostila de sql basico
Apostila de sql basico
 
Introdução a data warehouse e olap
Introdução a data warehouse e olapIntrodução a data warehouse e olap
Introdução a data warehouse e olap
 
Introdução a data warehouse e olap
Introdução a data warehouse e olapIntrodução a data warehouse e olap
Introdução a data warehouse e olap
 
Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -Replicação e alta disponibilidade by wagner bianchi -
Replicação e alta disponibilidade by wagner bianchi -
 
Banco de dados
Banco de dadosBanco de dados
Banco de dados
 
xxx no sequel
xxx no sequelxxx no sequel
xxx no sequel
 
Desenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQLDesenvolvendo serviços escaláveis e de alta performance com MySQL
Desenvolvendo serviços escaláveis e de alta performance com MySQL
 
4081 my sql
4081 my sql4081 my sql
4081 my sql
 

Mais de MySQL Brasil

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL Brasil
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL Brasil
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseMySQL Brasil
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Brasil
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQLMySQL Brasil
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQLMySQL Brasil
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016MySQL Brasil
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL Brasil
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQLMySQL Brasil
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPMySQL Brasil
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7MySQL Brasil
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7MySQL Brasil
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em StartupsMySQL Brasil
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15MySQL Brasil
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLMySQL Brasil
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15MySQL Brasil
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL Brasil
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...MySQL Brasil
 

Mais de MySQL Brasil (20)

MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017MySQL como Document Store PHP Conference 2017
MySQL como Document Store PHP Conference 2017
 
MySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e UberMySQL no Paypal Tesla e Uber
MySQL no Paypal Tesla e Uber
 
MySQL 8.0.1 DMR
MySQL 8.0.1 DMRMySQL 8.0.1 DMR
MySQL 8.0.1 DMR
 
Alta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL EnterpriseAlta disponibilidade com MySQL Enterprise
Alta disponibilidade com MySQL Enterprise
 
MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17MySQL Roadmap NoSQL HA Fev17
MySQL Roadmap NoSQL HA Fev17
 
Segurança no MySQL
Segurança no MySQLSegurança no MySQL
Segurança no MySQL
 
5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL5 razões estratégicas para usar MySQL
5 razões estratégicas para usar MySQL
 
Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016Alta disponibilidade no MySQL 5.7 GUOB 2016
Alta disponibilidade no MySQL 5.7 GUOB 2016
 
MySQL 5.7 como Document Store
MySQL 5.7 como Document StoreMySQL 5.7 como Document Store
MySQL 5.7 como Document Store
 
Enabling digital transformation with MySQL
Enabling digital transformation with MySQLEnabling digital transformation with MySQL
Enabling digital transformation with MySQL
 
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHPAlta Disponibilidade no MySQL 5.7 para aplicações em PHP
Alta Disponibilidade no MySQL 5.7 para aplicações em PHP
 
Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7Alta Disponibilidade no MySQL 5.7
Alta Disponibilidade no MySQL 5.7
 
NoSQL no MySQL 5.7
NoSQL no MySQL 5.7NoSQL no MySQL 5.7
NoSQL no MySQL 5.7
 
OpenStack & MySQL
OpenStack & MySQLOpenStack & MySQL
OpenStack & MySQL
 
10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups10 Razões para Usar MySQL em Startups
10 Razões para Usar MySQL em Startups
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
Estratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQLEstratégias de Segurança e Gerenciamento para MySQL
Estratégias de Segurança e Gerenciamento para MySQL
 
Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15Novidades do Universo MySQL julho-15
Novidades do Universo MySQL julho-15
 
MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15MySQL The State of the Dolphin - jun15
MySQL The State of the Dolphin - jun15
 
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
Aumentando a segurança, disponibilidade e desempenho com MySQL Enterprise Edi...
 

MySQL 5.6, o que há de novidade?

  • 1. 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
  • 2. 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:
  • 3. Método Tradicional Método utilizando Index Condition Pushdown 1. Busca-se a primeira linha do índice e 1. Busca-se a primeira linha do índice, mas através da primeira linha recupera-se não recupera a tabela toda; toda a tabela; 2. Para cada linha já faz a comparação com 2. Aplica-se a condição WHERE para a expressão do WHERE e adiciona o que filtrar os dados recuperados; for verdade ou conjunto verdade; 3. Os dados que são verdade em relação à 3. Retorna o conjunto verdade para o condição WHERE são retornados para o requisitante; usuário e o restante é descartado; 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;
  • 4. 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
  • 5. 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
  • 6. 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;