Seções iMasters
Banco de Dados + Gerência de TI + MySQL + Oracle

MySQL e o InnoDB Plugin – Performance e Formato de Arquivos

Muitos administradores de bancos de dados, e também os muitos desenvolvedores que no início de vários sistemas desempenham essa atividade, já usam o InnoDB Plugin, por ele apresentar performance melhor em até 1600% em relação a versões anteriores, quando o servidor de bancos de dados MySQL ainda utilizava somente o InnoDB chamado de Built-in ou nativo.

O InnoDB Plugin, além de performance muito melhor e também maior capacidade no tratamento de maior quantidade de transações concorrentes, com a melhoria continua do seu kernel, oferece compressão de dados e vários outros recursos que listo abaixo:

  • Fast Index Creation, que é, na verdade, a criação e a exclusão de índices de maneira muito mais otimizada, baseado na ordenação de índices da tabela que é target da alteração de sua estrutura;
  • Data Compression, o que permite que os arquivos de dados economizem I/O e espaço em disco;
  • Novas tabelas foram adicionadas ao INFORMATION_SCHEMA, na busca de prover melhor monitoramento de bloqueios e compressão de dados;
  • Gerenciamento do formato dos arquivos do InnoDB para que os tipos de arquivos sejam reconhecidos possibilitando a utilização tanto de formatos antigos quanto formatos mais atuais.

Várias melhorias foram realizadas no InnoDB Plugin, tendo sua versão mais atual disponível no MySQL 5.5. Podemos ver abaixo o resultado de benchmarks que foram disponibilizados pela equipe de consultores e de engenheiros do MySQL Oracle para demonstrar as melhorias de performance do produto na versão 5.5, que atualmente é aquela que foi homologada para ser utilizada em produção.
InnoDB PLugin Read/Write SysBench
A imagem acima compara as versões anteriores do InnoDB com o novo InnoDB Plugin, uma abordagem bem interessante e com a comprovação do hardware que foi utilizado para gerar as linhas do gráfico com base nos testes realizado no MySQL Labs: um aumento de desempenho ou de performance de 364% em leituras e em escritas concorrentes.

Se formos comparar o InnoDB PLugin que temos atualmente ao MyISAM, este que deixou de ser o Storage Engine padrão do MySQL, temos o seguinte cenário em relação à performance:

No comparativo acima, entre InnoDB e MyISAM, percebemos que quanto mais cores são endereçadas ao InnoDB, mais desempenho é observado, enquanto que o MyISAM continua com a mesma performance, alinhada ao gráfico, sem quedas e nem subidas na linha que o representa.

Formatos de arquivo

O mais interessante dos recursos certamente foi a adoção mais explícita dos formatos de arquivos que atualmente estão mais evidentes, uma vez que dá ao MySQL mais performance e disponibilidade e entrega ao seu ambiente todos as melhorias que foram disponibilizadas pela Oracle na versão 5.5 do produto (aguardem comentários sobre esse quesito que farei, utilizando a versão 5.6, que em breve será entregue para utilização em produção).

Quando se fala de formatos de arquivos, estamos falando do formato dos tablespaces, pois sua estrutura interna vem mudando e muito desde a versão 5.1, para que mais cada vez mais dados sejam suportados em relação à concorrência de operações e também na busca de melhorar a recuperação de dados.

O formato de arquivo na versão Built-In do InnoDB é chamado de “Antelope”, enquanto que o novo formato foi batizado como “Barracuda”. O formato Antelope é um arquivo não nomeado internamente, no qual as tabelas utilizam o formato de linha COMPACT ou REDUNDANT, possibilitando que o InnoDB armazene 768 bytes para colunas com tipos de dados variáveis (VARCHAR, VARBINARY, TEXT e BLOB) uma entrada no índice B-Tree ou chave primária da tabela. Já o novo formato, o Barracuda, é utilizado para prover todos os novos recursos que o InnoDB Plugin entrega ao mercado e ao usuário final, e seu formato de linha pode ser DYNAMIC ou COMPRESSED.

Para manter a compatibilidade entre bancos de dados que utilizam versões novas e versões antigas do MySQL, crie suas tabelas sem a opção ROW_FORMAT, informada no CREATE TABLE.   (Manual InnoDB PLugin)

Interessante observar, então, que existem algumas ações a serem realizadas quando da migração entre versões mais antigas para a versão 5.5 do servidor de bancos de dados MySQL. Você poderá facilmente fazer isso através da utilização do mysqldump para backup dos bancos de dados da versão antiga e restore do arquivo de backup criado na versão 5.5. Mas, antes de efetuar o restore, algumas recomendações interessantes, são:

  • Alterar o valor da variável innodb_file_per_table para ser igual 1 (ou seja, habilitado);
  • Alterar o valor da variável innodb_file_format para BARRACUDA;
  • Reinicie o MySQL;

Faça o restore dos dados a partir do seu backup e utilizando o MySQL Enterprise Backup ou o mysql client e, após isso, será necessário alterar o formato de linha, ou seja, a declaração ROW_FORMAT deverá ser igual à COMPRESSED ou DYNAMIC.

Fazendo uma leitura do INFORMATION_SCHEMA, podemos facilmente montar um ALTER TABLE para cada tabela do banco de dados, como exibido abaixo:

mysql> SHOW TABLES FROM world;
+-----------------+
| Tables_in_world |
+-----------------+
| City            |
| Country         |
| CountryLanguage |
+-----------------+
3 rows in set (0.00 sec)

mysql> SELECT CONCAT('ALTER TABLE ', TABLE_SCHEMA,'.',TABLE_NAME, ' ROW_FORMAT=COMPRESSED;') AS CmdAlterTable        
-> INTO OUTFILE '/tmp/alterTable.sql'        
-> FROM INFORMATION_SCHEMA.TABLES        
-> WHERE TABLE_SCHEMA='world';
Query OK, 3 rows affected (0.00 sec)
mysql> SOURCE /tmp/alterTable.sql;
Query OK, 4079 rows affected (0.51 sec)
Records: 4079  Duplicates: 0  Warnings: 0
Query OK, 239 rows affected (0.12 sec)
Records: 239  Duplicates: 0  Warnings: 0
Query OK, 984 rows affected (0.04 sec)
Records: 984  Duplicates: 0  Warnings: 0

Pronto, agora as tabelas do seu banco de dados não serão marcadas com uma marca d’água que reconhece seu formato como parte de uma distribuição antiga, e passará a utilizar todos as novas funcionalidades para fazer com que o MySQL tenha melhor desempenho. Assim, o banco de dados Open Source mais utilizado e mais popular do mundo toma mais atenção ao ser percebido como um produto muito confiável, fácil de manipular, rápido, escalável e robusto. 

A Oracle disponibiliza, além de suporte em português em que você fala direto com os engenheiros do MySQL, em ritmo 24×7, um time de consultores especializados e certificados no produto e também uma equipe de vendas pronta a atender ao cliente que deseja conhecer mais sobre a versão Enterprise e CGE do produto.

Do ponto de vista dos negócios, o MySQL facilmente se encaixará na demanda interna de qualquer empresa, para suporte a sistemas de quaisquer tamanhos, visto que o MySQL só será limitado ao hardware utilizado. Quanto mais velocidade no processamento de escritas e recuperação de dados, mais velocidade para atender clientes, mais rápido uma empresa entrega seus produtos e sem perder qualidade e escala.

Nos falamos em breve, Happy MySQL’ing.

Comente também

11 Comentários

Flavio Ferreira

Caraca !! Parabéns a equipe do MySql (By Oracle). O banco realmente está muito melhor

Italo Veloso

Wagner, atualmente utilizo a versão 5.1.41 do MySQL. No seu artivo em que você fala do MySQL 5.6 perguntei se podia atualizar a versão que é usado em produto e você disse que ainda não era recomendado. E a versão 5.5? É recomendado? Há alguma contra-indicação?

    Wagner Bianchi

    O MySQL na versão 5.5 já é uma versão homologada para produção, ou seja, você pode utilizá-la sem problemas em ambientes de produção, podendo munir o seu ambiente com mais velocidade e todas as features do InnoDB. Uma dica é que quando uma nova versão do MySQL é anunciada, vá até o site e veja o status dela e caso este seja G.A. = General Available, aí sim você poderá utilizar em produção.

    adriana

    Olá Italo!
    Esses Fóruns são ótimos .

    Carol

    Nossa muito boa essa ferramenta de interação, parabéns a todos!!!

    Denise

    Adorei a ferramenta!!!

Fabiano M.

caracules pro artigo, bonzão!

Edson dos Santos Júnior

Ótimo artigo.

bruno

poderia me informar ,ou melhor me explicar como funcio ?

Qual a sua opinião?