SlideShare une entreprise Scribd logo
1  sur  40
Introdução ao MySQL 5.6
Uma abordagem que lhe possibilitará saber de
todas as novidades e o estado da arte do servidor
de bancos de dados mais popular do mundo!
Wagner Bianchi é especialista em MySQL e outros servidores
de bancos de dados relacionais, como Oracle e SQL Server.
Atualmente é Sales Engineer na empresa norte americana
Percona (www.percona.com) para negócios na América
Latina.
Formado em Gerenciamento de Bancos de Dados, com MBA
em Administração de Empresas pela Fundação Getúlio Vargas
e Pós-Graduando em Bancos de Dados pela Universidade
Gama Filho do Distrito Federal. Possui várias certificações,
entre elas a SCMA, SCMDEV, SCMDBA, SMCDBA e MCDBA.
Autor
Contatos
• E-mail: wagner.bianchi@percona.com
• Skype: wbianchijr
• Twitter: @wagnerbianchijr
MySQL Certification Program
Conteúdo do Workshop
• Arquitetura do servidor de bancos de dados MySQL 5.6;
• MySQL 5.6 INFORMATION_SCHEMA;
• Melhorias no Otimizador de Consultas;
• Melhorias no Storage Engine InnoDB;
• Interface NoSQL com MEMCACHED API;
• Melhorias no particionamento de tabelas (MySQL Partitioning);
• Melhorias em pontos críticos da replicação de dados;
• Melhorias no monitoramento de performance;
Destaques:
• InnoDB Plugin e o suporte ao FullText Search;
• Binlog Group Commit (Replicação de Dados);
Arquitetura do servidor de bancos
de dados MySQL 5.6
Arquitetura MySQL 5.6
Arquitetura MySQL 5.6
• Primeira camada contendo módulos que compõem o
software de gerenciamento dos bancos de dados (parser,
query transformation, query cache, etc);
• Segundo camada contendo os “bocais” para “plugar” os
Storage Engines;
– Possibilidade de lidar com características de armazenamento de
dados;
– Possibilidade de lidar com vários Storage Engines em um mesmo
banco de dados;
– Habilitar e desabilitar Storage Engines;
Arquitetura MySQL 5.6
• Desde a versão anterior, a 5.5, lançada em 2010, o InnoDB
Plugin se tornou o Storage Engine padrão.
– quando você cria uma tabela sem a cláusula ENGINE, cria-
se uma nova tabela InnoDB com suporte à transação,
integridade referencial, FullText Search, logs de transação,
tablespace...
• Para verificar os Storage Engine disponíveis nativos do MySQL,
basta utilizar o comando SHOW ENGINES;
mysql> SHOW ENGINESG
[...]
*************************** 8. row ***************************
Engine: InnoDB
Support: YES
Comment: Supports transactions, row-level locking, and foreign keys
Arquitetura MySQL 5.6
• Controle de logs parte é feito pelo SGBD, parte é feito pelo
Storage Engine – e.g. InnoDB Transaction Logs (ib_logsx);
– Controlados pelo SGBD
• --general-log
• --log-bin (log binário do MySQL - registra atualizações - replicação)
• --slow-query-log (--log-slow-query até versão 5.0);
• --log-error
• --pid-file (caso especial, log para troca de mensagens entre mysqld e SO);
– Controlados pelo Storage Engine (InnoDB)
• ib_logsx, onde x é o número do log, geralmente localizados em /var/lib/mysql
Até a versão 5.5 do MySQL, a soma da capacidade de armazenamento dos arquivos
de log do InnoDB não poderia passar de 4G. Com o MySQL 5.6, esse tamanho foi
ampliado para 12G – quanto maior a capacidade dos arquivos de logs de transação,
mais disponibilidade, maior performance;
Arquitetura MySQL 5.6
• Os Storage Engines mais utilizados do MySQL são o MyISAM e
agora, de longe o mais usado é o InnoDB por suas
características e este utilizam memória da seguinte forma;
– MyISAM
• key_buffer_size para armazenamento de dados de índices (PK);
• read_buffer_size para armazenamento de buffer de dados já recuperados;
• Cache de dados realizado com a ajuda do sistema operacional (very busy!);
– InnoDB
• innodb_buffer_pool_size para armazenamento de índices e dados;
• innodb_buffer_pool_size_awe para armazenamento de metadados;
Arquitetura MySQL 5.6
• MyISAM key buffer/cache:
Arquitetura MySQL 5.6
• MyISAM key buffer/cache status variables:
mysql> show status like 'key%';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| Key_blocks_not_flushed | 0 |
| Key_blocks_unused | 2 |
| Key_blocks_used | 167893 |
| Key_read_requests | 1560 |
| Key_reads | 178590 |
| Key_write_requests | 1980 |
| Key_writes | 102785 |
+------------------------+--------+
7 rows in set (0.01 sec)
Tuning!
Arquitetura MySQL 5.6
• InnoDB buffer pool:
Arquitetura MySQL 5.6
• InnoDB buffer pool:
– InnoDB mantém logs em memória (buffer) e em disco;
• innodb_log_group_home_dir [ =/var/lib/mysql ]
• Innodb_log_files_in_group = [ 4 ]
• Innodb_log_file_size = [ 768M ]
• innodb_log_buffer_size = 12G # MySQL 5.6 ++
– A quantidade de memória configurada para o parâmetro
acima será alocada logo que o mysqld for iniciado;
– As variáveis acima são parte do conjunto utilizado para
configurar o comportamento dos logs do InnoDB;
Tuning!
Arquitetura MySQL 5.6
MySQL 5.6
INFORMATION_SCHEMA
MySQL 5.6 INFORMATION_SCHEMA
• O INFORMATION_SCHEMA, no MySQL, assim como um
vários outros produtos de bancos de dados, é o dicionário de
dados;
– Dados sobre dados:
• Lista de bancos de dados, Storage Engines, tabelas, colunas, índices;
• Lista de aspectos do “runtime” do servidor de bancos de dados;
– Formado por um conjunto de visões (não podem ser alteradas
diretamente):
• INFORMATION_SCHEMA.SCHEMATA;
• INFORMATION_SCHEMA.TABLES;
• INFORMATION_SCHEMA.TABLE_CONSTRAINTS;
• INFORMATION_SCHEMA.GLOBAL_VARIABLES;
• INFORMATION_SCHEMA.PROFILING;
MySQL 5.6 INFORMATION_SCHEMA
• Com o MySQL 5.6, outras visões próprias para a leitura de
performance do InnoDB foram implementadas;
mysql> show tables like “INNODB_SYS%”;
+--------------------------------------------+
| Tables_in_information_schema (INNODB_SYS%) |
+--------------------------------------------+
| INNODB_SYS_FIELDS |
| INNODB_SYS_INDEXES |
| INNODB_SYS_TABLESTATS |
| INNODB_SYS_COLUMNS |
| INNODB_SYS_FOREIGN_COLS |
| INNODB_SYS_FOREIGN |
| INNODB_SYS_TABLES |
+--------------------------------------------+
7 rows in set (0.00 sec)
MySQL 5.6 INFORMATION_SCHEMA
• Visões para monitoramento de outras features já no MySQL
5.5:
mysql> show tables like 'INNODB%';
+----------------------------------------+
| Tables_in_INFORMATION_SCHEMA (INNODB%) |
+----------------------------------------+
| INNODB_CMP_RESET |
| INNODB_TRX |
| INNODB_CMPMEM_RESET |
| INNODB_LOCK_WAITS |
| INNODB_CMPMEM |
| INNODB_CMP |
| INNODB_LOCKS |
+----------------------------------------+
7 rows in set (0.05 sec)
MySQL 5.6
Otimizador de Consultas
Otimizador de Consultas
• Mudanças consideráveis aconteceram no otimizador de
consultas, que tem suas variáveis que influenciam na hora de
determinar a melhor estratégia de recuperação de dados;
mysql> SELECT @@optimizer_switchG
*************************** 1. row ***************************
@@optimizer_switch: index_merge=on,
index_merge_union=on,
index_merge_sort_union=on,
index_merge_intersection=on,
engine_condition_pushdown=on,
index_condition_pushdown=on,
mrr=on,mrr_cost_based=on
Otimizador de Consultas
• Index Condition Pushdown (ICP):
– Otimizações de recuperação de dados baseadas em índices;
– Operação com suporte à todos os Storage Engines;
– As linhas são recuperadas já com a aplicação do filtro (WHERE);
– Recurso originado em operações com o MySQL Cluster 7.0 ++;
mysql> EXPLAIN SELECT Name FROM City WHERE ID > '2000' AND ID <= 4000G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 2160
Extra: Using index condition
1 row in set (0.00 sec)
Otimizador de Consultas
• Multi-Range Read:
– Comportamento padrão do otimizador para o MySQL 5.6;
– InnoDB armazena dados de forma randômica, páginas, blocos and extensões;
– Acesso randômico é ruim para índices secundários (PK+[UNIQUE|KEY]);
– O MRR ou Multi-Range Read possibilita acesso seqüencial aos dados;
• File Sort Optimization:
– Comportamento padrão do otimizador para o MySQL 5.6;
– Recurso interessante para sistemas que precisam “paginar” dados;
– Melhor performance para consultas que utilizam ORDER BY com
coluna não indexada com a cláusula LIMIT;
MySQL 5.6
Storage Engine InnoDB
Storage Engine InnoDB
• Persistent Optimizer Stats:
– O Storage Engine InnoDB, na versão 1.2.2, oferece estatísticas
persistentes para que a recuperação de dados não seja afetada após
um restart do servidor de bancos de dados;
– Este comportamento é controlado pelas seguintes variáveis de
ambiente:
• innodb_analyze_is_persistent [= ON];
• innodb_stats_persistent_sample_pages;
• andinnodb_stats_transient_sample_pages;
– Com o POS ativado, as estatísticas somente serão recomputadas caso
seja rodado explicitamente o comando ANALYZE TABLE;
Storage Engine InnoDB
• Novas tabelas no INFORMATION_SCHEMA:
Utilidade Tabelas
Métricas de utilização INNODB_METRICS
Visão interna de todos
os pontos do InnoDB
INNODB_SYS_TABLES, INNODB_SYS_TABLESTAT,
INNODB_SYS_INDEXES, INNODB_SYS_COLUMNS,
INNODB_SYS_FIELDS,INNODB_SYS_FOREIGN,
e INNODB_SYS_FOREIGN_COLS
Informações sobre o
consumo da área de
memória configurada
para o Buffer Pool
INNODB_BUFFER_PAGE,INNODB_BUFFER_PAGE_LRU
e INNODB_BUFFER_POOL_STATS
Storage Engine InnoDB
• Multi-Threaded Purge:
– Com o MySQL 5.6 o InnoDB passa a ter threads especializadas para o processo
de expurgo de dados, que na verdade é tido como um tipo de garbage
collector, o que evita problemas com performance;
– Tal comportamento é configurado através da variável innodb_purge_threads,
que pode ter valores de 0 (off) até 32, que significa o número de threads que
serão dedicadas ao processo de expurgo;
• Separate Flush Thread:
– Uma novidade no MySQL 5.6, uma thread dedicado à limpeza de páginas
sujas, denominada page_cleaner, trabalhando no mesmo conceito do
Adaptive Flushing;
Storage Engine InnoDB
• Pruning the InnoDB Table Cache:
– Tableas que não são acessadas mais por algum tempo são retiradas da
memória (table_cache_definition) para liberar espaço;
– Um algorítimo de LRU é utilizado para fazer esse controle;
MySQL 5.6
NoSQL com MEMCACHED API
NoSQL com MEMCACHED API
• Com uma crescente utilização de armazenamento NoSQL (Not
Only SQL) e com o surgimento de vários players no mercado:
– MySQL dá acesso NoSQL baseado em MEMCACHED API;
– Acesso a dados diretamente em tabelas controladas pelo InnoDB nativo;
– Persistente, crash-safe, transacional baseado em ACID;
– Oferece aos usuários o melhor dos dois mundos, a utilização de linguagem
SQL para recuperação de dados (tabelas InnoDB) e a performance melhorada
para sistemas que acessam dados diretamente, $key -> $value;
NoSQL com MEMCACHED API
MySQL 5.6
MySQL 5.6 Partitioning Engine
MySQL 5.6 Partitioning Engine
• O particionamento de tabelas:
– Se aplicado com padrões poderá melhorar performance radicalmente;
– Organizar melhorar os dados em partições e em discos diferentes;
– Performance!
• Com o MySQL 5.6:
– Selecionar dados de uma partição diretamente com a função PARTITION();
• SELECT * FROM employees PARTITION (p0, p2);
• DELETE FROM employees PARTITION (p0, p1);
• UPDATE employees PARTITION (p0) SET store_id = 2 WHERE fname = 'Jill';
– Migrar dados entre tabelas com comandos SQL;
• ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;
MySQL 5.6
MySQL 5.6 Replicação de Dados
Replicação de Dados
• Multi-Threaded Slaves:
– Múltiplas threads no servidor SLAVE podem ser utilizadas para
executar as atualizações que são recuperadas do log binário do
servidor MASTER, aumentando a disponibilidade dos serviços;
– As atualizações replicadas são realizadas em paralelo, e não mais
seqüencial como antes;
• Crash-Safe Slaves:
– Aumento da segurança com base na integridade dos dados em
replicação. Através dos arquivos master.info e relaylog.info, uma
transação poderá ter seu skip automático, evitando uma intervenção
do DBA;
– Maior concentração do DBA e atividades mais estratégicas;
Replicação de Dados
• Replication Checksums:
– Ao replicar dados, um checksum é relaizado para que seja conferido
no seu destino, evitando problemas de corrompimento de pacotes de
dados;
• Time-Delayed Replication:
– A partir do MySQL 5.6, você poderá definir um tempo (em
milissegundos) de quando os dados serão liberados para os servidores
SLAVES.
– Configurado em nível de servidor SLAVE e realizado através da
SQL_THREAD;
• Informational Log Events:
– Melhorias em questões de auditoria através do log binário;
Replicação de Dados
• Remote Binlog Back-up:
– Utilizando a opção --raw, juntamente com a opção --read-from-
remote-server, é possível ler e fazer backup dos logs binários em
outro servidor:
shell> mysqlbinlog --read-from-remote-server --host=host_name --raw /
binlog.000130 binlog.000131 binlog.000132
• Server UUIDs
– Não é mais necessário atribuir um server_id único para cada
servidor dentro da topologia de replicação, uma vez que ao executar o
MySQL 5.6 pela primeira vez, uma arquivo auto.cnf será criado com
um valor único para cada servidor – automaticamente.
– Esta informação estará disponível através do SHOW SLAVE STATUS;
Destaques:
• InnoDB Plugin e o suporte ao FullText Search;
• Binlog Group Commit (Replicação de Dados);
Obrigado!
• E-mail: wagner.bianchi@percona.com
• Skype: wbianchijr
• Twitter: @wagnerbianchijr

Contenu connexe

Tendances

Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL ServerRaul Oliveira
 
MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Brasil
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQLMySQL Brasil
 
Replicação MySQL e PHP
Replicação MySQL e PHPReplicação MySQL e PHP
Replicação MySQL e PHPMySQL Brasil
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoMySQL Brasil
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...MySQL Brasil
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQLMySQL Brasil
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SORaul Oliveira
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014MySQL Brasil
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014MySQL Brasil
 
Azure Stack | Visão Geral
Azure Stack | Visão GeralAzure Stack | Visão Geral
Azure Stack | Visão GeralFabio Hara
 
MySQL sobreviverá à nuvem?
MySQL sobreviverá à nuvem?MySQL sobreviverá à nuvem?
MySQL sobreviverá à nuvem?MySQL Brasil
 
Treinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteTreinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteSite Blindado Labs
 
Apresentação SQL Server 29/04
Apresentação SQL Server 29/04Apresentação SQL Server 29/04
Apresentação SQL Server 29/04Allen Informática
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSFabio Hara
 
Visão geral do Windows Azure Backup
Visão geral do Windows Azure BackupVisão geral do Windows Azure Backup
Visão geral do Windows Azure BackupFabio Hara
 
Windows Admin Center
Windows Admin CenterWindows Admin Center
Windows Admin CenterFabio Hara
 

Tendances (20)

Arquitetura SQL Server
Arquitetura SQL ServerArquitetura SQL Server
Arquitetura SQL Server
 
MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)MySQL Enterprise (outubro-2011)
MySQL Enterprise (outubro-2011)
 
Alta-disponibilidade com MySQL
Alta-disponibilidade com MySQLAlta-disponibilidade com MySQL
Alta-disponibilidade com MySQL
 
MySQL no Windows
MySQL no WindowsMySQL no Windows
MySQL no Windows
 
Replicação MySQL e PHP
Replicação MySQL e PHPReplicação MySQL e PHP
Replicação MySQL e PHP
 
Guia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produtoGuia essencial para embarcar o MySQL em seu produto
Guia essencial para embarcar o MySQL em seu produto
 
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
Otimizando a segurança, o desempenho e a disponibilidade com o MySQL Enterpri...
 
Oracle Premier Support para MySQL
Oracle Premier Support para MySQLOracle Premier Support para MySQL
Oracle Premier Support para MySQL
 
SQL over SMB3
SQL over SMB3SQL over SMB3
SQL over SMB3
 
Analise de Performance Usando o SO
Analise de Performance Usando o SOAnalise de Performance Usando o SO
Analise de Performance Usando o SO
 
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
Novidades do Universo MySQL para PHP Web Developers - Dezembro 2014
 
Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014Novidades do Universo MySQL Agosto 2014
Novidades do Universo MySQL Agosto 2014
 
Azure Stack | Visão Geral
Azure Stack | Visão GeralAzure Stack | Visão Geral
Azure Stack | Visão Geral
 
MySQL sobreviverá à nuvem?
MySQL sobreviverá à nuvem?MySQL sobreviverá à nuvem?
MySQL sobreviverá à nuvem?
 
Treinamento de AWS - 2° Parte
Treinamento de AWS - 2° ParteTreinamento de AWS - 2° Parte
Treinamento de AWS - 2° Parte
 
Apresentação SQL Server 29/04
Apresentação SQL Server 29/04Apresentação SQL Server 29/04
Apresentação SQL Server 29/04
 
Windows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMSWindows Server 2016, System Center 2016 e OMS
Windows Server 2016, System Center 2016 e OMS
 
Visão geral do Windows Azure Backup
Visão geral do Windows Azure BackupVisão geral do Windows Azure Backup
Visão geral do Windows Azure Backup
 
Windows Admin Center
Windows Admin CenterWindows Admin Center
Windows Admin Center
 
Bigdata
BigdataBigdata
Bigdata
 

En vedette

InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLWagner Bianchi
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLMorgan Tocker
 
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
 
MySQL partitions tutorial
MySQL partitions tutorialMySQL partitions tutorial
MySQL partitions tutorialGiuseppe Maxia
 

En vedette (7)

InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQLInnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
 
Introduction to Galera Cluster
Introduction to Galera ClusterIntroduction to Galera Cluster
Introduction to Galera Cluster
 
MySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB StatusMySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB Status
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
 
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
 
MySQL partitions tutorial
MySQL partitions tutorialMySQL partitions tutorial
MySQL partitions tutorial
 

Similaire à Introdução ao MySQL 5.6

Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBSaveincloud
 
WBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting
 
MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Brasil
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016Roberto Fonseca
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQLKingHost - Hospedagem de sites
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15MySQL Brasil
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoWagner Bianchi
 
SGBD - ORACLE - JAVA
SGBD - ORACLE - JAVASGBD - ORACLE - JAVA
SGBD - ORACLE - JAVAssuser4cf889
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceSaveincloud
 
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 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL Brasil
 
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
 
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
 
Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012André Déo
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsRenato Groff
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationWagner Bianchi
 

Similaire à Introdução ao MySQL 5.6 (20)

Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDB
 
WBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning BasicsWBConsulting, MySQL Performance Tuning Basics
WBConsulting, MySQL Performance Tuning Basics
 
MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor MySQL Profiling com Enterprise Monitor
MySQL Profiling com Enterprise Monitor
 
Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016
 
Novidades do Sql Server 2016
Novidades do Sql Server 2016Novidades do Sql Server 2016
Novidades do Sql Server 2016
 
[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL[Webinar] Performance e otimização de banco de dados MySQL
[Webinar] Performance e otimização de banco de dados MySQL
 
Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15Novidades do MySQL para desenvolvedores ago15
Novidades do MySQL para desenvolvedores ago15
 
MySQL - visão geral
MySQL - visão geralMySQL - visão geral
MySQL - visão geral
 
UNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - ReplicaçãoUNIFAL - MySQL 5.6 - Replicação
UNIFAL - MySQL 5.6 - Replicação
 
SGBD - ORACLE - JAVA
SGBD - ORACLE - JAVASGBD - ORACLE - JAVA
SGBD - ORACLE - JAVA
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
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 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?MySQL 5.6, o que há de novidade?
MySQL 5.6, o que há de novidade?
 
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
 
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
 
Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012Zabbix FLISOL Campinas 28-04-2012
Zabbix FLISOL Campinas 28-04-2012
 
Sql Server
Sql ServerSql Server
Sql Server
 
Monitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application InsightsMonitorando APIs REST com o Application Insights
Monitorando APIs REST com o Application Insights
 
MySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source ReplicationMySQL 5.7 Multi-Source Replication
MySQL 5.7 Multi-Source Replication
 

Plus de Wagner Bianchi

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Wagner Bianchi
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinWagner Bianchi
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoWagner Bianchi
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Wagner Bianchi
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleWagner Bianchi
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWagner Bianchi
 
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 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
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6Wagner Bianchi
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)Wagner Bianchi
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product OverviewWagner Bianchi
 

Plus de Wagner Bianchi (17)

Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18Migrations from PLSQL and Transact-SQL - m18
Migrations from PLSQL and Transact-SQL - m18
 
Maxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoinMaxscale switchover, failover, and auto rejoin
Maxscale switchover, failover, and auto rejoin
 
Meetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de UsoMeetup São Paulo, Maxscale Implementação e Casos de Uso
Meetup São Paulo, Maxscale Implementação e Casos de Uso
 
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
Escalando o ambiente com MariaDB Cluster (Portuguese Edition)
 
NY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with MaxscaleNY Meetup: Scaling MariaDB with Maxscale
NY Meetup: Scaling MariaDB with Maxscale
 
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source ReplicationWebinar: MariaDB Provides the Solution to Ease Multi-Source Replication
Webinar: MariaDB Provides the Solution to Ease Multi-Source Replication
 
MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016MySQL Multi-Source Replication for PL2016
MySQL Multi-Source Replication for PL2016
 
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
 
UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6UNIFAL - MySQL Triggers - 5.0/5.6
UNIFAL - MySQL Triggers - 5.0/5.6
 
UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6UNIFAL - MySQL Stored Routines - 5.0/5.6
UNIFAL - MySQL Stored Routines - 5.0/5.6
 
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
UNIFAL - MySQL Linguagem SQL Básico - 5.0/5.6
 
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
UNIFAL - MySQL & Vagrant (iniciando os trabalhos)
 
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
Wagner Bianchi, GUOB 2014 MySQL Cluster 7.3
 
Mysql for IBMers
Mysql for IBMersMysql for IBMers
Mysql for IBMers
 
MySQL Cluster Product Overview
MySQL Cluster Product OverviewMySQL Cluster Product Overview
MySQL Cluster Product Overview
 
MySQL Cluster Basics
MySQL Cluster BasicsMySQL Cluster Basics
MySQL Cluster Basics
 

Introdução ao MySQL 5.6

  • 1. Introdução ao MySQL 5.6 Uma abordagem que lhe possibilitará saber de todas as novidades e o estado da arte do servidor de bancos de dados mais popular do mundo!
  • 2. Wagner Bianchi é especialista em MySQL e outros servidores de bancos de dados relacionais, como Oracle e SQL Server. Atualmente é Sales Engineer na empresa norte americana Percona (www.percona.com) para negócios na América Latina. Formado em Gerenciamento de Bancos de Dados, com MBA em Administração de Empresas pela Fundação Getúlio Vargas e Pós-Graduando em Bancos de Dados pela Universidade Gama Filho do Distrito Federal. Possui várias certificações, entre elas a SCMA, SCMDEV, SCMDBA, SMCDBA e MCDBA. Autor
  • 3. Contatos • E-mail: wagner.bianchi@percona.com • Skype: wbianchijr • Twitter: @wagnerbianchijr
  • 5. Conteúdo do Workshop • Arquitetura do servidor de bancos de dados MySQL 5.6; • MySQL 5.6 INFORMATION_SCHEMA; • Melhorias no Otimizador de Consultas; • Melhorias no Storage Engine InnoDB; • Interface NoSQL com MEMCACHED API; • Melhorias no particionamento de tabelas (MySQL Partitioning); • Melhorias em pontos críticos da replicação de dados; • Melhorias no monitoramento de performance; Destaques: • InnoDB Plugin e o suporte ao FullText Search; • Binlog Group Commit (Replicação de Dados);
  • 6. Arquitetura do servidor de bancos de dados MySQL 5.6
  • 8. Arquitetura MySQL 5.6 • Primeira camada contendo módulos que compõem o software de gerenciamento dos bancos de dados (parser, query transformation, query cache, etc); • Segundo camada contendo os “bocais” para “plugar” os Storage Engines; – Possibilidade de lidar com características de armazenamento de dados; – Possibilidade de lidar com vários Storage Engines em um mesmo banco de dados; – Habilitar e desabilitar Storage Engines;
  • 9. Arquitetura MySQL 5.6 • Desde a versão anterior, a 5.5, lançada em 2010, o InnoDB Plugin se tornou o Storage Engine padrão. – quando você cria uma tabela sem a cláusula ENGINE, cria- se uma nova tabela InnoDB com suporte à transação, integridade referencial, FullText Search, logs de transação, tablespace... • Para verificar os Storage Engine disponíveis nativos do MySQL, basta utilizar o comando SHOW ENGINES; mysql> SHOW ENGINESG [...] *************************** 8. row *************************** Engine: InnoDB Support: YES Comment: Supports transactions, row-level locking, and foreign keys
  • 10. Arquitetura MySQL 5.6 • Controle de logs parte é feito pelo SGBD, parte é feito pelo Storage Engine – e.g. InnoDB Transaction Logs (ib_logsx); – Controlados pelo SGBD • --general-log • --log-bin (log binário do MySQL - registra atualizações - replicação) • --slow-query-log (--log-slow-query até versão 5.0); • --log-error • --pid-file (caso especial, log para troca de mensagens entre mysqld e SO); – Controlados pelo Storage Engine (InnoDB) • ib_logsx, onde x é o número do log, geralmente localizados em /var/lib/mysql Até a versão 5.5 do MySQL, a soma da capacidade de armazenamento dos arquivos de log do InnoDB não poderia passar de 4G. Com o MySQL 5.6, esse tamanho foi ampliado para 12G – quanto maior a capacidade dos arquivos de logs de transação, mais disponibilidade, maior performance;
  • 11. Arquitetura MySQL 5.6 • Os Storage Engines mais utilizados do MySQL são o MyISAM e agora, de longe o mais usado é o InnoDB por suas características e este utilizam memória da seguinte forma; – MyISAM • key_buffer_size para armazenamento de dados de índices (PK); • read_buffer_size para armazenamento de buffer de dados já recuperados; • Cache de dados realizado com a ajuda do sistema operacional (very busy!); – InnoDB • innodb_buffer_pool_size para armazenamento de índices e dados; • innodb_buffer_pool_size_awe para armazenamento de metadados;
  • 12. Arquitetura MySQL 5.6 • MyISAM key buffer/cache:
  • 13. Arquitetura MySQL 5.6 • MyISAM key buffer/cache status variables: mysql> show status like 'key%'; +------------------------+--------+ | Variable_name | Value | +------------------------+--------+ | Key_blocks_not_flushed | 0 | | Key_blocks_unused | 2 | | Key_blocks_used | 167893 | | Key_read_requests | 1560 | | Key_reads | 178590 | | Key_write_requests | 1980 | | Key_writes | 102785 | +------------------------+--------+ 7 rows in set (0.01 sec) Tuning!
  • 14. Arquitetura MySQL 5.6 • InnoDB buffer pool:
  • 15. Arquitetura MySQL 5.6 • InnoDB buffer pool: – InnoDB mantém logs em memória (buffer) e em disco; • innodb_log_group_home_dir [ =/var/lib/mysql ] • Innodb_log_files_in_group = [ 4 ] • Innodb_log_file_size = [ 768M ] • innodb_log_buffer_size = 12G # MySQL 5.6 ++ – A quantidade de memória configurada para o parâmetro acima será alocada logo que o mysqld for iniciado; – As variáveis acima são parte do conjunto utilizado para configurar o comportamento dos logs do InnoDB; Tuning!
  • 18. MySQL 5.6 INFORMATION_SCHEMA • O INFORMATION_SCHEMA, no MySQL, assim como um vários outros produtos de bancos de dados, é o dicionário de dados; – Dados sobre dados: • Lista de bancos de dados, Storage Engines, tabelas, colunas, índices; • Lista de aspectos do “runtime” do servidor de bancos de dados; – Formado por um conjunto de visões (não podem ser alteradas diretamente): • INFORMATION_SCHEMA.SCHEMATA; • INFORMATION_SCHEMA.TABLES; • INFORMATION_SCHEMA.TABLE_CONSTRAINTS; • INFORMATION_SCHEMA.GLOBAL_VARIABLES; • INFORMATION_SCHEMA.PROFILING;
  • 19. MySQL 5.6 INFORMATION_SCHEMA • Com o MySQL 5.6, outras visões próprias para a leitura de performance do InnoDB foram implementadas; mysql> show tables like “INNODB_SYS%”; +--------------------------------------------+ | Tables_in_information_schema (INNODB_SYS%) | +--------------------------------------------+ | INNODB_SYS_FIELDS | | INNODB_SYS_INDEXES | | INNODB_SYS_TABLESTATS | | INNODB_SYS_COLUMNS | | INNODB_SYS_FOREIGN_COLS | | INNODB_SYS_FOREIGN | | INNODB_SYS_TABLES | +--------------------------------------------+ 7 rows in set (0.00 sec)
  • 20. MySQL 5.6 INFORMATION_SCHEMA • Visões para monitoramento de outras features já no MySQL 5.5: mysql> show tables like 'INNODB%'; +----------------------------------------+ | Tables_in_INFORMATION_SCHEMA (INNODB%) | +----------------------------------------+ | INNODB_CMP_RESET | | INNODB_TRX | | INNODB_CMPMEM_RESET | | INNODB_LOCK_WAITS | | INNODB_CMPMEM | | INNODB_CMP | | INNODB_LOCKS | +----------------------------------------+ 7 rows in set (0.05 sec)
  • 22. Otimizador de Consultas • Mudanças consideráveis aconteceram no otimizador de consultas, que tem suas variáveis que influenciam na hora de determinar a melhor estratégia de recuperação de dados; mysql> SELECT @@optimizer_switchG *************************** 1. row *************************** @@optimizer_switch: index_merge=on, index_merge_union=on, index_merge_sort_union=on, index_merge_intersection=on, engine_condition_pushdown=on, index_condition_pushdown=on, mrr=on,mrr_cost_based=on
  • 23. Otimizador de Consultas • Index Condition Pushdown (ICP): – Otimizações de recuperação de dados baseadas em índices; – Operação com suporte à todos os Storage Engines; – As linhas são recuperadas já com a aplicação do filtro (WHERE); – Recurso originado em operações com o MySQL Cluster 7.0 ++; mysql> EXPLAIN SELECT Name FROM City WHERE ID > '2000' AND ID <= 4000G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: City type: range possible_keys: PRIMARY key: PRIMARY key_len: 4 ref: NULL rows: 2160 Extra: Using index condition 1 row in set (0.00 sec)
  • 24. Otimizador de Consultas • Multi-Range Read: – Comportamento padrão do otimizador para o MySQL 5.6; – InnoDB armazena dados de forma randômica, páginas, blocos and extensões; – Acesso randômico é ruim para índices secundários (PK+[UNIQUE|KEY]); – O MRR ou Multi-Range Read possibilita acesso seqüencial aos dados; • File Sort Optimization: – Comportamento padrão do otimizador para o MySQL 5.6; – Recurso interessante para sistemas que precisam “paginar” dados; – Melhor performance para consultas que utilizam ORDER BY com coluna não indexada com a cláusula LIMIT;
  • 26. Storage Engine InnoDB • Persistent Optimizer Stats: – O Storage Engine InnoDB, na versão 1.2.2, oferece estatísticas persistentes para que a recuperação de dados não seja afetada após um restart do servidor de bancos de dados; – Este comportamento é controlado pelas seguintes variáveis de ambiente: • innodb_analyze_is_persistent [= ON]; • innodb_stats_persistent_sample_pages; • andinnodb_stats_transient_sample_pages; – Com o POS ativado, as estatísticas somente serão recomputadas caso seja rodado explicitamente o comando ANALYZE TABLE;
  • 27. Storage Engine InnoDB • Novas tabelas no INFORMATION_SCHEMA: Utilidade Tabelas Métricas de utilização INNODB_METRICS Visão interna de todos os pontos do InnoDB INNODB_SYS_TABLES, INNODB_SYS_TABLESTAT, INNODB_SYS_INDEXES, INNODB_SYS_COLUMNS, INNODB_SYS_FIELDS,INNODB_SYS_FOREIGN, e INNODB_SYS_FOREIGN_COLS Informações sobre o consumo da área de memória configurada para o Buffer Pool INNODB_BUFFER_PAGE,INNODB_BUFFER_PAGE_LRU e INNODB_BUFFER_POOL_STATS
  • 28. Storage Engine InnoDB • Multi-Threaded Purge: – Com o MySQL 5.6 o InnoDB passa a ter threads especializadas para o processo de expurgo de dados, que na verdade é tido como um tipo de garbage collector, o que evita problemas com performance; – Tal comportamento é configurado através da variável innodb_purge_threads, que pode ter valores de 0 (off) até 32, que significa o número de threads que serão dedicadas ao processo de expurgo; • Separate Flush Thread: – Uma novidade no MySQL 5.6, uma thread dedicado à limpeza de páginas sujas, denominada page_cleaner, trabalhando no mesmo conceito do Adaptive Flushing;
  • 29. Storage Engine InnoDB • Pruning the InnoDB Table Cache: – Tableas que não são acessadas mais por algum tempo são retiradas da memória (table_cache_definition) para liberar espaço; – Um algorítimo de LRU é utilizado para fazer esse controle;
  • 30. MySQL 5.6 NoSQL com MEMCACHED API
  • 31. NoSQL com MEMCACHED API • Com uma crescente utilização de armazenamento NoSQL (Not Only SQL) e com o surgimento de vários players no mercado: – MySQL dá acesso NoSQL baseado em MEMCACHED API; – Acesso a dados diretamente em tabelas controladas pelo InnoDB nativo; – Persistente, crash-safe, transacional baseado em ACID; – Oferece aos usuários o melhor dos dois mundos, a utilização de linguagem SQL para recuperação de dados (tabelas InnoDB) e a performance melhorada para sistemas que acessam dados diretamente, $key -> $value;
  • 33. MySQL 5.6 MySQL 5.6 Partitioning Engine
  • 34. MySQL 5.6 Partitioning Engine • O particionamento de tabelas: – Se aplicado com padrões poderá melhorar performance radicalmente; – Organizar melhorar os dados em partições e em discos diferentes; – Performance! • Com o MySQL 5.6: – Selecionar dados de uma partição diretamente com a função PARTITION(); • SELECT * FROM employees PARTITION (p0, p2); • DELETE FROM employees PARTITION (p0, p1); • UPDATE employees PARTITION (p0) SET store_id = 2 WHERE fname = 'Jill'; – Migrar dados entre tabelas com comandos SQL; • ALTER TABLE e EXCHANGE PARTITION p0 WITH TABLE e2;
  • 35. MySQL 5.6 MySQL 5.6 Replicação de Dados
  • 36. Replicação de Dados • Multi-Threaded Slaves: – Múltiplas threads no servidor SLAVE podem ser utilizadas para executar as atualizações que são recuperadas do log binário do servidor MASTER, aumentando a disponibilidade dos serviços; – As atualizações replicadas são realizadas em paralelo, e não mais seqüencial como antes; • Crash-Safe Slaves: – Aumento da segurança com base na integridade dos dados em replicação. Através dos arquivos master.info e relaylog.info, uma transação poderá ter seu skip automático, evitando uma intervenção do DBA; – Maior concentração do DBA e atividades mais estratégicas;
  • 37. Replicação de Dados • Replication Checksums: – Ao replicar dados, um checksum é relaizado para que seja conferido no seu destino, evitando problemas de corrompimento de pacotes de dados; • Time-Delayed Replication: – A partir do MySQL 5.6, você poderá definir um tempo (em milissegundos) de quando os dados serão liberados para os servidores SLAVES. – Configurado em nível de servidor SLAVE e realizado através da SQL_THREAD; • Informational Log Events: – Melhorias em questões de auditoria através do log binário;
  • 38. Replicação de Dados • Remote Binlog Back-up: – Utilizando a opção --raw, juntamente com a opção --read-from- remote-server, é possível ler e fazer backup dos logs binários em outro servidor: shell> mysqlbinlog --read-from-remote-server --host=host_name --raw / binlog.000130 binlog.000131 binlog.000132 • Server UUIDs – Não é mais necessário atribuir um server_id único para cada servidor dentro da topologia de replicação, uma vez que ao executar o MySQL 5.6 pela primeira vez, uma arquivo auto.cnf será criado com um valor único para cada servidor – automaticamente. – Esta informação estará disponível através do SHOW SLAVE STATUS;
  • 39. Destaques: • InnoDB Plugin e o suporte ao FullText Search; • Binlog Group Commit (Replicação de Dados);
  • 40. Obrigado! • E-mail: wagner.bianchi@percona.com • Skype: wbianchijr • Twitter: @wagnerbianchijr