2. Mapa
MySQL, ... numa imagem
Storage Engines
MyISAM
InnoDB
archive, memory, outros...
Replicação
MySQL Cluster
Linux tunning para MySQL
Tunning do MySQL
MySQL 5.4, 6.0
SMP performance
Falcon
Maria
Comunidade, patches, recursos.
3.
4. MyISAM
É o engine default
Muito Rápido nos cenários:
(quase) só Leituras
(quase) só Escritas
Má performance em cargas mistas.
Locking é feito ao nivel da tabela.
Não é ACID porque:
Não suporta transacções
Não é crash-safe
Suporta full-text-search
Tunning da memória que pode usar é confuso.
5. InnoDB
Storage engine Transaccional, suporta ACID.
crash-safe
transacções
Enterprise level
Multi-Versioning Concurrency Control.
Muito bom em cargas mistas (leituras + escritas)
Locking granular (ao nível da quot;rowquot;)
Mais fácil de afinar a performance.
Ocupa mais espaço (1.5x) em disco que MyISAM
Maior carga de IO/disco (para garantir ACID)
6. Archive, Memory, outros..
Archive
Append only
Extremamente compacto
Excelente para logging/auditing/arquivamento.
É mais lento que MyISAM para insersões ou leituras.
(devido à compressão)
Memory
Volátil, existe unicamente em memória
Extremamente rápido
Limite de tamanho, mas não existe limite do nº de
tabelas quot;memoryquot;
Suporta indices HASH
Federated, CSV, Blackhole, Merge, NDB
7. Replicação
Master-Slave Usos avançados:
Assincrona Master - Master
Usos principais Replicação Circular
Hot spare Fast Master promotion
Hot backup Na versão 5.1, 5.4, 6.0:
Load balance das Row based replication
leituras Patches disponíveis:
Fácil de usar Semi-sync replication
Fácil de manter Scriptable replication
Estável Delayed replication
Cuidado com:
espaço em disco
escritas nos slaves
troca de master
8. Replicação
Extremamente popular
Killer Feature
Imensos tutoriais online (Youtube videos e tudo.. )
Documentação oficial é muito boa
Possível replicar BDs distintos para slaves distintos.
http://dev.mysql.com/doc/refman/5.4/en/replication-
solutions.html
Todos deviam usar :)
10. MySQL Cluster (NDB)
Vantagens:
Alta disponibilidade
quot;replicaçãoquot; sincrona
Escalabidade para cargas grandes
Usado sobretudo em quot;enterprise quot;
Funciona, já experimentei!
Tutoriais online (youtube videos e tudo)
Limitações:
5.0: Tabelas têm de caber em memória
5.1: Indices têem de caber em memória
Latências altas
Performance
Complexidade
11. System Tunning
Não usar raid5 (usar raid10)
XFS tem melhor performance
Linux a 64bits
Muita RAM é a melhor forma de melhorar a performance
Não usar o MySQL da distribuição
Cuidado com:
swapiness
Muitos cpus ou cores
Muitos discos/raids
12. MySQL tuning
show GLOBAL status;
show GLOBAL variables;
show engine innodb status;
sort_buffer_size
tmp_table_size
MyISAM
key_buffer_size
InnoDB
innodb_buffer_pool_size
innodb_file_per_table
innodb_flush_log_at_trx_commit = 2
innodb_flush_method=O_DIRECT
Memory
max_heap_table_size
13. Versões
Super estável - MySQL 5.0.77+
Estável - MySQL 5.1.34+
row based replication
table partitioning
MySQL Cluster bastante melhor.
melhor performance, diagnóstico
Super Veloz (beta) - MySQL 5.4.0+
melhor escalabilidade e performance
melhor diagnostico/monitoring
integra patches do Google, Percona, outros
Mais recente (alpha) - MySQL 6.0.10+
Falcon (novo storage engine)
Semi-sync replication
14. storage engines
Comunidade Maria - MyISAM+
Falcon - InnoDB+
XtraDB - InnoDB+
PBXT - InnoDB+
Sphinx - full text search
Percona (XtraDB) http://www.percona.com/
Primebase (PBXT) http://www.primebase.org/
Google (patches) http://code.google.com/p/google-mysql-
tools/
Google developer blog http://mysqlha.blogspot.com/
Drizzle (fork) https://launchpad.net/drizzle
MariaDB (fork) http://askmonty.org/wiki/index.php/MariaDB
Sphinx http://www.sphinxsearch.com/
... existem mais...