UNIFAL - MySQL Transações - 5.0/5.6 by Wagner Bianchi 1630 views
UNIFAL - MySQL Views - 5.0/5.6 by Wagner Bianchi 297 views
UNIFAL - MySQL Logs - 5.0/5.6 by Wagner Bianchi 689 views
Solving the MySQL and MariaDB High ... by MariaDB Corporation 5981 views
Understanding innodb locks and dead... by Valerii Kravchuk 12060 views
Query Optimization with MySQL 5.7 a... by Jaime Crespo 16810 views
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.
Bianca Caruso da Paixão , Database Analyst at Globo.com
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çãoHá pouco mais de um ano atrás, vimos a Oracle se pronunciar em uma palestra que foi chamadade State of Dolphin, na qual Edward Screven fez o lançamento oficial do MySQL 5.5 e comentousobre 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égiasde otimização de performance, não só para ambientes que utilizam o InnoDB Plugin como principalStorage 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 nautilização da replicação assíncrona ou semi-síncrona com Storage Engines transacionais. Temosque frisar que, é notório que com o MySQL sob o desenvolvimento da Oracle, os times dedesenvolvimento, consultoria, suporte, treinamento e comercialização da versão enterprise doproduto se tornaram mais organizados, prontos para atender ao cliente e hoje já estão presentes namaior parte dos países do mundo, com o intuito de fazer com que haja a entrega de um MySQL cadavez melhor para os usuários e empresas que desejam ter um menor TCO e condições plenas dedesmistificar 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 asnovidades que o MySQL 5.5 apresentou e que agora são ainda mais evidenciadas para que melhoresresultados sejam obtidos por seus clientes. A possibilidade de utilização do InnoDB Plugin, a criaçãode múltiplas instâncias de buffer-pool, a replicação semi-síncrona, adoção de um banco de dados demetadados 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ãodesenvolvidas 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 melhoriasprevistas: • 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 PushdownAssim como foi desenvolvido primeiro com o MySQL Cluster nas versões atuais (este que é umoutro produto que tem sua nova versão, a 7.2, prevista para ser entregue bem em breve), o recursodenominado Engine Condition Pushdown também foi desenvolvido para o MySQL Server.Com um nome um pouquinho diferente, no MySQL Server o recurso é conhecido como IndexCondition Pushdown ou ICP e é responsável por fazer com os dados sejam recuperados de tabelascom a utilização de pelo menos um índice. Normalmente, os dados são lidos com base na existênciade um índice, os dados são retornados para a primeira camada do servidor de bancos de dadosMySQL e na seqüência, a condição WHERE da consulta é aplicada aos dados. Com a utilização doICP, 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 dedados.Como sabemos, a arquitetura do servidor de bancos de dados MySQL prevalece esse tipo deoperação, pois, na primeira camada estão localizados os módulos de parse, transformaçãootimização e outros. Após uma query passar por todos estes módulos e entrar em processo deexecução, o WHERE é enviado para a segunda camada com a intenção de ler somente os dados quesatisfação tal condição. Assim, bem menos dados serão retornados para a primeira camada doMySQL e estes, entregues aos programa cliente (e também sendo armazenado no MySQL QueryCache, 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 MEMCACHEDUma grande novidade e que é muito aguardada para começar a ser tão logo utilizada é apossibilidade de utilização de uma interface direta com o InnoDB, ou seja, a partir do MySQL 5.6será possível que web services acessem diretamente os dados do InnoDB sem passar portransformações da linguagem utilizada em SQL – reforçando o estilo NoSQL que vêm tendo muitodestaque 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ódulosque 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, denominadacache. Utilizando tal estrutura, o MEMCACHED, que agora é disponibilizada em forma de API,desenvolvedores e administradores de bancos de dados poderão se beneficiar das seguintesformas: • 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 emdetrimento aos que a própria Oracle atualmente tem enfatizado, todos os softwares são produzidosjuntos, integrados e testados juntos com a intenção de prover boa tecnologia, com baixo custo depropriedade – TCO. Para aqueles que querem saber mais, o MySQL Cluster 7.2, nova versão previstapara ser entregue em breve para ambiente de produção, já possui a MEMCACHED API, sendoutilizada 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 "NoSQLStyle", publicada no site da InnoDB (antiga InnoBase Oy), empresa de propriedade da Oracle desde2005, que desenvolve o InnoDB built-in e o InnoDB Plugin:Melhorias no suporte ao particionamento de tabelasUma dos recursos que eu mais gostei quando foi lançado no MySQL 5.1 foi realmente oparticionamento de tabelas, particionamento este que é realizado de forma horizontal. Escrevibastante 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 dedados em meio à tabelas com grandes quantidade de dados. Um dos recursos valiosos dentro doparticionamento 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 orecursos Index Condition Pushdown revelará a você usuário uma grande possibilidade de otimizaçãodo 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 daconsulta SELECT, qual a partição será utilizada para recuperar dados. Se o usuário sabe que apartição "p3" abriga dados que satisfação uma condição, esta poderá ser indicada de maneiraexplí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,p2Query 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: 0mysql> 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 umconjunto de dados para uma nova tabela ou mesmo exportar de uma para outra através docomando ALTER TABLE ... EXCHANGE PARTITION.ConclusãoAo passo que novidades forem sendo liberadas pela turma de desenvolvimento, pois, o MySQL 5.6ainda está no seu milestone 5 e ainda não está completamente desenvolvido e não é interessantecolocá-lo em produção. Alguns outros recursos como melhorias no esquema de replicação sãomuito preciosos e também muito aguardados e fazem parte também dos recursos que querocomentar 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óriopróprio com o intuito de informar aos usuários que compõem não só a comunidade de usuários doMySQL, mas toda a comunidade de usuários de software Open Source, dos recursos os quais aempresa Oracle Corporation têm desenvolvido para a nova versão do servidor de bancos de dadosOpen 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;