Novidades do Universo MySQL Airton Lastori airton.lastori@oracle.com julho-2015
Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle s products remains at the sole discretion of Oracle.
Edward Screven & Tomas Ulin no Open World 2014 Oracle Chief Corporate Architect & VP of MySQL Engineering [video] youtube.com/watch?v=fzcpd4j72ja
Oracle elevando o nível Um MySQL cada vez melhor, 5 anos de investimento 2x Engineering Staff 3x QA Staff 2x Support Staff
Fonte: http://db-engines.com/en/ranking_trend (junho/15)
MySQL: evolução com foco nas necessidades dos usuários Web, Cloud, Distribuído e Embarcado 7
Evolução da arquitetura do MySQL Foco em Web, Cloud, Distribuído, Embarcado Mais Modularidade Refactoring do Optimizer, Parser, Runtime Performance & Escalabilidade Novo Modelo de Custo do Optimizer Melhorias no InnoDB & Replicação Gerenciamento & Segurança Operações Online Data Dictionary, Performance Schema MySQL Enterprise 8
MySQL Central @ Oracle Open World 2014 Alguns cases apresentados... [slides] oracle.com/openworld/mysql
Breve histórico: 2010-2015 MySQL Enterprise Monitor 2.2 MySQL Cluster 7.1 MySQL Cluster Manager 1.0 MySQL Workbench 5.2 MySQL Database 5.5 MySQL Enterprise Backup 3.5 MySQL Enterprise Monitor 2.3 MySQL Cluster Manager 1.1 MySQL Enterprise Backup 3.7 Todos GA, prontos para! Oracle Products Certifications MySQL Windows Installer & Tools MySQL Enterprise Security MySQL Enterprise Scalability MySQL Enterprise Audit MySQL Cluster 7.2 MySQL Cluster Manager 1.3 MySQL Utilities MySQL Workbench 6.0 Todos GA! MySQL Database 5.6 MySQL Cluster 7.4 MySQL Enterprise Monitor 3.0 MySQL Enterprise Backup 3.12 MySQL Fabric MySQL Workbench 6.3 MySQL Enterprise Encryption Todos GA! MySQL Database 5.7 RC labs.mysql.com Disponível agora!
MySQL Database Rápida retrospectiva
Qual versão do MySQL Database você usa? SELECT @@version; +---------------------------------------+ @@version +---------------------------------------+ 5.6.25-enterprise-commercial-advanced +---------------------------------------+ 1 row in set (0,00 sec)
Evolução da escalabilidade vertical do MySQL 2008 2009 2010 2013 Até 4 CPU/cores MySQL AB MySQL 5.0 Até 16 CPU/cores Sun Microsystems MySQL 5.1 (InnoDB Plugin) Até 32 CPU/cores Oracle MySQL 5.5 Up to 48 CPU/cores Oracle MySQL 5.6
Atualize! MySQL 5.6 e InnoDB Oracle Confidential Internal/Restricted/Highly Restricted 14
No Windows: MySQL Installer Next, Next... Finish! dev.mysql.com/downloads/windows/installer
No Linux: repositórios YUM e APT para MySQL Maneira simples e conveniente de instalar e atualizar produtos MySQL Suporta as distribuições Enterprise Linux RedHat Enterprise/Oracle Linux Fedora Debian/Ubuntu Inclui os pacotes mais atuais MySQL Database MySQL Workbench MySQL Connectors MySQL Utilities Mais de 50% dos downloads para Fedora/RedHat já são feitos do repositório www.alastori.com.br/2014/05/tutorial-deinstalacao-do-mysql-56-e.html
ou manualmente via binários pré-compilados
Convertendo tabelas para InnoDB Mais confiabilidade e escalabilidade [documentação] mysql.com/doc/refman/5.6/en/converting -tables-to-innodb.html
MySQL Database 5.7 RC Disponível para download e testes, ainda não recomendado para produção Oracle Confidential Internal/Restricted/Highly Restricted 19
MySQL 5.7 Release Candidate Performance & Escalabilidade 2x mais rápido que MySQL 5.6 InnoDB continua melhorando: operações online & performance Novidades na Replicação: multisource, multi-threaded slaves... Otimizador: melhores planos de execução com novo Modelo de Custo Gerenciamento & Segurança Mais info no Performance Schema MySQL SYS Schema nativo Mais segurança na inicialização, setup e gerenciamento MySQL Enterprise Firewall RC mysqlserverteam.com/the-mysql-5-7-7-release-candidate-is-available 20
MySQL 5.7 Release Candidate Performance & Escalabilidade 2x mais rápido que MySQL 5.6 InnoDB continua melhorando: operações online & performance Novidades na Replicação: multisource, multi-threaded slaves... Otimizador: melhores planos de execução com novo Modelo de Custo Gerenciamento & Segurança Mais info no Performance Schema MySQL SYS Schema nativo Mais segurança na inicialização, setup e gerenciamento MySQL Enterprise Firewall RC mysqlserverteam.com/the-mysql-5-7-7-release-candidate-is-available 21
Queries per Second MySQL 5.7: Sysbench Read Only Point Select 2x mais rápido que MySQL 5.6 3x mais rápido que MySQL 5.5 645,000 QPS MySQL 5.7: Sysbench Read Only (Point Select) 700,000 600,000 MySQL 5.7 500,000 400,000 300,000 MySQL 5.6 200,000 100,000 0 8 16 32 64 128 256 512 1,024 Connections MySQL 5.5 Intel(R) Xeon(R) CPU E7-4860 x86_64 4 sockets x 10 cores-ht (80 CPU threads) 2.3 GHz, 512 GB RAM Oracle Linux 6.5 22
Connections/Second MySQL 5.7: Conexões por Segundo 1.7x mais rápido que MySQL 5.6 2.5x mais rápido que MySQL 5.5 67,000 Conexões/Sec 80,000 Connections Per Second 70,000 60,000 50,000 40,000 30,000 MySQL 5.5 MySQL 5.6 MySQL 5.7 20,000 10,000 0 MySQL 5.5 MySQL 5.6 MySQL 5.7 Intel(R) Xeon(R) CPU E7-4860 x86_64 4 sockets x 10 cores-ht (80 CPU threads) 2.3 GHz, 512 GB RAM Oracle Linux 6.5 23
Queries per Second MySQL 5.7: InnoDB, NoSQL com Memcached 6x mais rápido que MySQL 5.6 Contribuição do Facebook 1 Milhão de QPS MySQL 5.7 vs 5.6 - InnoDB & Memcached 1,200,000 1,000,000 MySQL 5.7 800,000 600,000 400,000 200,000 MySQL 5.6 0 8 16 32 64 128 256 512 1,024 Connections Intel(R) Xeon(R) CPU E7-4860 x86_64 4 sockets x 10 cores-ht (80 CPU threads) 2.3 GHz, 512 GB RAM Oracle Linux 6.5 24
Exemplos Memcached API Artigo no imasters por Marcelo Altmann http://imasters.com.br/banco-de-dados/mysql-e-nosql-memcached-plugin/ Ondemand Webinar: NoSQL Memcached API for MySQL Cluster 22 August 2012 mysql.com/news-and-events/on-demand-webinars/display-od-723.html Slides: https://www.mysql.com/why-mysql/presentations/mysql-cluster-nosql-memcached-api
MySQL 5.7: InnoDB Diversas Melhorias Sempre Online InnoDB Buffer Pool dinâmico, UNDO tablespace separado e auto-truncation, renomear índice, mudar varchar, mais variáveis de config. dinâmicas Melhorias para SSD (especialmente FusionIO) Quando DirectFS for detectado, Doublewrite buffer desabilitado automaticamente Dirty Page Flushing paralelizado Maior throughput, performance e escalabilidade Particionamento nativo na camada de Storage Engines Elimina limitações anteriores, melhora utilização de recursos, TTS para partições individuais
MySQL 5.7: InnoDB Diversas Melhorias Melhorias de performance bulk load (importação de dados) e criação de índices mais rápidos buffer pool dump/load por default e cache preloading temp tables no InnoDB General Tablespaces Múltiplas tabelas armazenadas em tablespaces definidos pelo usuário Compressão transparente e configurável no nível de páginas High priority transactions com suporte para MySQL Group Replication
Replicação MySQL Escritas & Leituras Master Aplicação Leituras Slave Exemplos de uso: dividir carga OLTP e OLAP backup contingência distribuição geográfica etc.
MySQL 5.7: Replicação Melhor Performance, Usabilidade e Disponibilidade Maior throughput 8-10x Gargalo eliminado com 8 threads paralelas Replicação sem perda Semi-sync Melhor performance no master para Semisynchronous Replication Diagnóstico e monitoramento via Performance Schema Mais operações online GTID deploy Filtros dinâmicos de replicação 250% 200% 150% 100% 50% 0% Slave throughput vs. 96 Thread Master 1 8 24 48 Slave Threads
MySQL 5.7: Multi-Source Replication Master 1 Master 2 Master N Consolida updates de múltiplos Masters em um Slave Binlog Binlog Binlog Visão consolidada Novas topologias Ponto centralizado de backup IO 1 Relay 1 IO 2 Relay 2 IO N Relay N Relatórios mais fáceis Operações online master switch Coordinator Coordinator Coordinator Coordinator filtros dinâmicos por Master W1 W2 WX W1 W2 WX W1 W2 WX W1 W2 WX monitoriamento via Performance Schema Aplicação continua responsável por manter data sets não-conflitantes entre as diversas fontes Slave Compatível com Semi-Synchronous Replication & Multi-Thread Slaves
MySQL 5.7 Parser & Optimizer Refactoring Abre caminho para melhorias mais rápidas com maior estabilidade e menor risco Modularização e separação em camadas Definição clara do que acontece nos estágios de parsing, otimização e execução Novo hint framework Sintaxe padronizada /*+ */ Suporte a novos hints SQL DML query Query result Parser Optimizer Resolver: Semantic check,name resolution Logical transformations Cost-based optimizer: Join order and access methods Plan refinement Query execution plan Query execution Storage Engine InnoDB MyISAM
MySQL 5.7: Optimizer - EXPLAIN expandido e visual "query_block": { "select_id": 1, "cost_info": { "query_cost": "200.40" }, "table": { "table_name": "nicer_but_slower_film_list", "access_type": "ALL", "rows_examined_per_scan": 992, "rows_produced_per_join": 992, "filtered": 100, "cost_info": { "read_cost": "2.00", "eval_cost": "198.40", "prefix_cost": "200.40", "data_read_per_join": "852K" }, "used_columns": [ "FID", "title", "description", "category", "price", "length", "rating", "actors" ],... 32
MySQL 5.7: Optimizer EXPLAIN de queries em execução Problema: Uma query em uma sessão está rodando há um longo tempo Nova opção: EXPLAIN FOR CONNECTION de outra sessão EXPLAIN [FORMAT=(JSON TRADITIONAL)] FOR CONNECTION <id>; Descubra a causa-raíz do atraso Otimize a query
MySQL 5.7: Query Rewrite Plugin Usuários podem controlar o que ocorre antes e depois do parse da query Muitos casos de uso Reescrita de uma query problemática sem alterar a aplicação Melhorar queries vindas de um ORM ou aplicações de terceiros Migrações de outros SGBDs Modificar ordem dos joins, adicionar hints, etc. Elimina necessidade de proxies em muitos casos mysqlserverteam.com/the-query-rewrite-plugins
MySQL 5.7: Novo Modelo de Custo do Otimizador Mais performance com estimativas mais precisas Adaptável aos novos hardwares SSD, memória abundante, mais caches Configurável e tunável Tabelas mysql.server_cost & mysql.engine_cost Meta-info de onde dado reside (disco ou in cache) acessível via API Implementação mais fácil de manter Evita hard coded cost constants Refactoring de heurísticas existentes no modelo atual 35
Execution time relative to 5.6 (%) Optimizer Cost Model: Performance Improvements DBT-3 (Size Factor 10, CPU bound) 100 80 60 40 MySQL 5.6 MySQL 5.7 20 0 Q3 Q7 Q8 Q9 Q12 5 out of 22 queries get a much improved query plan (others remain the same)
Execution time relative to 5.6 (%) Execution time relative to 5.6 (%) Optimizer Cost Model: Performance Improvements DBT-3 (Size Factor 10) CPU bound Disk bound 100 100 80 80 60 5.6 60 5.6 40 5.7 40 5.7 20 20 0 Q2 Q18 0 Q2 Q18 2 out of 22 queries get a significantly improved query plan (others remain the same)
MySQL 5.7 Release Candidate Performance & Escalabilidade 2x mais rápido que MySQL 5.6 InnoDB continua melhorando: operações online & performance Novidades na Replicação: multisource, multi-threaded slaves... Otimizador: melhores planos de execução com novo Modelo de Custo Gerenciamento & Segurança Mais info no Performance Schema MySQL SYS Schema nativo Mais segurança na inicialização, setup e gerenciamento MySQL Enterprise Firewall RC mysqlserverteam.com/the-mysql-5-7-7-release-candidate-is-available 39
MySQL 5.7: Performance Schema Instrumentos para Memória Adicionados mais de 200 Memory Types Agregação de estatísticas Tipo de memória (cache, interna buffer, ) Thread/usuário/host gerando operações indiretas na memória Atributos incluem Uso da Memória Memória usada (bytes), Operações (counts), máximo/mínimo histórico Instrumentação de Statements Instrumentação ampliada de statements Stored Procedures e Stored Functions Prepared Statements Transações Outros Dados adicionais Métricas e instrumentações adicionais Status dos Slaves MDL lock Detalhamento de Threads por usuário
MySQL SYS Schema Views simplificadas na Performance Schema & Information Schema SYS é similar a: Oracle V$ catalog views Microsoft SQL Server DMVs (Dynamic Management Views) IBM DB2 SYSIBM catalog Mais de 80 views auto-atualizáveis, agora nativas na versão 5.7 Ajuda encontrar e diagnosticar diagnosticar problemas de performance Monitoramento da saude do server com estatísticas Inclui schemas, tabelas e índices, IO hot spots, Locking, Queries lentas Disponível também no Workbench 6.1+ ou via GitHub para 5.5 e 5.6
MySQL 5.7: Segurança AES 256 Encryption e SSL habilitado por default usa certificados existentes ou gera automaticamente caso necessário novo utilitátio: mysql_ssl_rsa_setup Definição de roles através para todos plugins de autenticação (proxy user) Políticas de expiração de senhas globais ou por usuário Facilidade na inicialização segura do servidor mysqld --initialize Instalação segura por padrão Senha aleatória na instalação Sem conta anônima, schemas de testes Suporte nativo ao systemd com detecção automática e envio de logs ao syslog 43
MySQL Enterprise Edition Suporte + Backup + Monitor + Workbench + Plug-ins Escalabilidade Segurança Firewall Auditoria Criptografia Oracle Enterprise Manager for MySQL
Plugins Comerciais para Segurança MySQL Enterprise Secutiry External Authentication Plugins Delega autenticação para diretório de usuários, como AD, LDAP Linux e Windows MySQL Enterprise Audit Implementa logs de auditoria com um único comando de instalação Flexibilidade na configuração Aderente às principais normas de regulação MySQL Enterprise Firewall Bloqueio online de ameaças Transparente para Aplicação Alertas & Logs MySQL Enterprise Encryption Funções do OpenSSL via SQL Gerenciamento de Certificados Criptografia Assimétrica Oracle Confidential Internal/Restricted/Highly Restricted 45
Enterprise Firewall Select *.* from employee where id=22 Allow & Log Applications Select *.* from employee where id=22 or 1=1 White List Block & Log Construção automática de Whitelists Bloqueio online de ameaças Alertas & Logs Transparente para Aplicação Alta performance & Escalável
Saiba mais... Detalhes sobre O que há de novo no MySQL 5.7 (até agora) [blog post] http://www.alastori.com.br/2014/11/oque-ha-de-novo-no-mysql-5.html
MySQL GIS InnoDB Spatial Index Suporte a índices R-tree otimizados Integração com Boost.Geometry Melhor precisão Suporte a tipos e funções adicionais Performance melhorada Open Geospatial Consortium compliance Colaboração com melhorias no Boost.Geometry GeoHash e GeoJSON Novas funções como ST_Distance_Sphere() e ST_MakeEnvelope()
MySQL 5.7: Server-side Statement Timeouts Contribuição do Davi Arnaut, nosso colega brasileiro no LinkedIn Server Side statement timeouts Global para o server, por sessão, ou individual por SELECT SELECT MAX_STATEMENT_TIME = 109 * FROM my_table; Baseado na contribuição do Davi Arnaut Expandido para Windows e Solaris, removida opção USER
Download: MySQL 5.7 Release Candidate disponível para testes dev.mysql.com/downloads/mysql
Participe com seu Feedback bugs.mysql.com
Código-fonte no GitHub bugs.mysql.com
MySQL Utilities & Fabric 1.5 Oracle Confidential Internal/Restricted/Highly Restricted 57
MySQL Utilities 1.5 Útil para DevOps e gerenciamento automatizado do MySQL Automatiza tarefas comuns de DevOps Replication: provisionamento, teste, monitoramento e failover Comparação de Databases: verificação de consistência Manutenção: users, connections, tables Auditoria Scripts em Python Pacote standalone ou via MySQL Workbench Extensíveis para incluir scripts customizados (usa Python library) Novo: Integração Openstack Nova, Server providers https://oracleus.activeevents.com/2014/connect/filedownload/session/cf4f217f7e733ef6066ed14d5cb7371c/con5636_kindahl- MySQLFabricElasticityOOW2014.pdf
MySQL Fabric 1.5 (MySQL Utilities) Alta-disponibilidade + escalabilidade de escrita com sharding Application Connector SQL MySQL Fabric Alta disponibilidade: Monitoramento do Server com failover automático e transparente para aplicação Sem Proxy, sem latência extra e SPoF Read-slaves HA group Read-slaves HA group Escalabilidade de escrita com sharding: Aplicação define a shard key (Range ou Hash) Ferramentas para re-sharding Tabelas globais & global updates Conectores devem ser Fabric-aware : Java, Python, PHP
Limitações da versão atual Versão inicial, foco na simplicidade e robustez Alta-disponibilidade OK, escalabilidade de escrita em andamento Sharding não é completamente transparente para aplicação Necessário fornecer a sharding key Colunas Auto-increment não podem ser usadas como sharding key Sem Joins envolvendo múltiplos shards MySQL Connector (driver) deve suportar Fabric atualmente disponível para Java, Python e PHP O nó Fabric por si só não é tolerante a falhas O connector tem seu cache local e continua operando quando o processo Fabric não está disponível
Tutorial disponível no white paper Whitepaper: MySQL Fabric September 2014 mysql.com/why-mysql/white-papers
MySQL Cluster 7.4 Oracle Confidential Internal/Restricted/Highly Restricted 63
MySQL Cluster 7.4 GA 200 Million NoSQL Reads/Sec 2.5M SQL Ops/Sec 50% Faster Reads 40% Faster Mixed Active-Active Geographic Redundancy Conflict Detection/Resolution 5X Faster Maintenance Ops Detailed Reporting Performance Active-Active Management Copyright 2015, oracle and/or its affiliates. All rights reserved 65
MySQL Cluster 7.4 Melhor performance e simplicidade operacional GA Ganho de Performance sobre v7.3 47% (Read-Only) 38% (Read-Write) Operações de manutenção mais rápidas Reinicializações e Upgrades
MySQL Cluster: Active-Active Geo-Replication Asynchronous replication between MySQL Clusters Active-Active Update anywhere Conflict detection Application notified through exception tables Can opt to have conflicts resolved automatically Auto-conflict-resolution Conflicting transaction and dependent ones are rolled-back No required changes to app schema 67
MySQL Workbench 6.3 Oracle Confidential Internal/Restricted/Highly Restricted 68
MySQL Workbench 6.3 GA Fabric Add node, browse, view, connect Performance Dashboard Performance Schema Reports & Graphs Visual Explain GIS Viewer Migration New: Microsoft Access Microsoft SQL Server, Sybase, PostgreSQL, SQLite New Easy to Use Wizards for Fast Data Migration Table<->File Data Import/Export (like Excel) SSL Certificate Creation 69
MySQL Workbench 6.1 Dashboards: Performance & Status Network, Server, InnoDB Analyze hotspots, costly SQL statements, wait times, locks, InnoDB stats, and more
Oracle Confidential Internal/Restricted/Highly Restricted 75
O que vem por aí Oracle Confidential Internal/Restricted/Highly Restricted 76
MySQL Labs Builds especiais para testes da comunidade dev.mysql.com/downloads/mysql
Group Replication labs.mysql.com Application MySQL Masters MySQL Server API Replication Plugin Group Comms Multi-master update anywhere Conflict detection and resolution (transaction rollback) Optimistic State Machine Replication Automatic group membership management and failure detection No need for server fail-over Elastic scale out/in No single point of failure Automatic reconfiguration Well integrated InnoDB GTID-based replication PERFORMANCE_SCHEMA
MySQL 5.7: JSON labs.mysql.com Native JSON data types Native internal binary format for efficient processing & storage Built-in JSON functions Allowing you to efficiently store, search, update, and manipulate Documents JSON Comparator Allows for easy integration of Document data within your SQL queries Indexing of Documents using Generated Columns InnoDB supports indexes on both stored and virtual Generated Columns New expression analyzer automatically uses the best functional index available 80
HTTP Plugin for MySQL labs.mysql.com Server Plugin adds HTTP(S) endpoints to MySQL Results are serialized to JSON format encoded as UTF8 Provides 3 choices of User Endpoint Types SQL CRUD - Key-Value JSON - Document
MySQL Hadoop Applier Integração em tempo real do MySQL para Hadoop Cada tabela mapeada para um diretório Hive data warehouse Possibilita usufruir de ferramentas de análise do eco-sistema Hadoop Construído sobre MySQL Binlog API e libhdfs library Artigos dev.mysql.com Download labs.mysql.com
Sumário Há muito investimento da Oracle no MySQL com foco em Aplicações Web e Embarcadas. A edição Community ganha mais velocidade e qualidade. O MySQL Enterprise Edition aumenta a disponibilidade, o desempenho e a segurança através de ferramentas, extensões comerciais e suporte.
Treinamentos e certificações MySQL DBA MySQL for Beginners Ed 3 MySQL for Database Administrators Ed 3.1 MySQL Performance Tuning MySQL High Availability MySQL Cluster MySQLDeveloper Introduction to MySQL 5.5 MySQL for Beginners Ed 3 MySQL and PHP Developing Dynamic Web Applications MySQL for Developers Ed 2 MySQL Developers Techniques Certificações Oracle Certified Professional, MySQL 5.6 DBA Oracle Certified Professional, MySQL 5.6 Developer Oracle Certified Expert, MySQL Cluster DBA MySQL Advanced Stored Procedures Opcional Necessário education.oracle.com/mysql
@MySQLBR facebook.com/mysqlbr meetup.com/mysql-br pt.planet.mysql.com
Obrigado! Copyright Copyright 2014, Oracle 2015 Oracle and/or and/or its affiliates. its affiliates. All rights All rights reserved.
Perguntas? Novidades do Universo MySQL Contato: airton.lastori@oracle.com twitter.com/mysqlbr facebook.com/mysqlbr
MySQL Enterprise Edition Contatos comerciais Marcos Trujillo Enterprise Sales, Oracle marcos.trujillo@oracle.com Alison Rabelo OEM/ISV Sales, Oracle alison.rabelo@oracle.com