Your SlideShare is downloading. ×
0
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
InnoDB Plugin - II Fórum da Comunidade MySQL
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

InnoDB Plugin - II Fórum da Comunidade MySQL

1,334

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,334
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
28
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MySQL InnoDB Plugin
  • 2. <ul><li>Wagner Bianchi   </li></ul><ul><li>É especialista em MySQL e outros servidores de bancos de dados relacionais como Oracle e SQL Server. 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 e SCMCDBA. Atualmente é Consultor Sênior em bancos de dados pela WAGNERBIANCHI.COM . </li></ul>
  • 3. Agenda <ul><li>InnoDB Plugin e Built-in ; </li></ul><ul><li>Performance Tuning: </li></ul><ul><ul><li>Buffer Pool; </li></ul></ul><ul><ul><li>Variáveis de Ambiente; </li></ul></ul><ul><ul><li>Variáveis de Status; </li></ul></ul><ul><ul><li>Monitoramento de Performance; </li></ul></ul><ul><li>Novas Funcionalidades: </li></ul><ul><ul><li>InnoDB FullText Search – MySQL 5.6; </li></ul></ul><ul><ul><li>InnoDB MEMCACHED – MySQL 5.6; </li></ul></ul><ul><ul><li>INFORMATION_SCHEMA tables – 5.6; </li></ul></ul>
  • 4. MySQL Architecture
  • 5. InnoDB Plugin MySQL Server 1º camada do servidor InnoDB Plugin
  • 6. InnoDB Plugin x Built-In <ul><li>Plugin disponibilizado durante ainda no MySQL 5.1; </li></ul><ul><li>Desenvolvimento “ dividir e conquistar ”; </li></ul><ul><li>Era necessário instalar: </li></ul><ul><ul><li>INSTALL PLUGIN ... ; </li></ul></ul><ul><ul><li>Variável de ambiente plugin_dir ( /usr/lib/mysql/plugin ); </li></ul></ul><ul><li>InnoDB Built-In com boa escala para aquele momento; </li></ul><ul><li>Questões relacionadas com o aumento dos serviços web; </li></ul><ul><li>Geração frenética de informação pelas organizações; </li></ul><ul><li>Necessidade de processamento rápido e escalável; </li></ul><ul><li>Nova tendência de mercado – escala horizontal, organização de dados de forma não estruturada; </li></ul>
  • 7. InnoDB Plugin x Built-In Features Plugin Built-In Shared Tablespace Sim Sim File Per Table Estável Instável Processing Scale-Up + 8 cores até 8 cores Adaptive Hash Index Sim Não Compressão de dados Sim Não Fast Index Creation Sim Não Controle de Estimativa de Estatísticas Sim Não BARRACUDA file format Sim Não Multiple Commit Threads Sim Não Group Commit Sim Não Buffer Pool Multiple Instances Sim Não INFORMATION_SCHEMA tables Sim Não
  • 8. InnoDB Plugin x Built-In
  • 9. Performance Tuning <ul><li>Buffer Pool </li></ul><ul><ul><li>Área de memória que armazena dados e índices InnoDB; </li></ul></ul><ul><ul><li>Trabalha com o algoritmo LRU ( Least Recently Used ) onde este controla uma lista com duas sub-listas: </li></ul></ul><ul><ul><ul><li>Head , Young ou New – sub-lista com blocos de dados acessados /utilizados recentemente; </li></ul></ul></ul><ul><ul><ul><li>Tail ou Old – sub-lista que armazena blocos dados que não foram acessados recentemente e que serão despejados da memória caso continuem não sendo utilizados; </li></ul></ul></ul><ul><ul><li>Utiliza um processo chamado de “ eviction ” para despejar páginas não utilizadas da memória, dando lugar para novas páginas que chegam. </li></ul></ul>
  • 10. Performance Tuning <ul><ul><ul><li>innodb_buffer_pool_size=2G </li></ul></ul></ul><ul><ul><ul><li>innodb_buffer_pool_instances=2 </li></ul></ul></ul>EXT01 EXT02 EXT03 BPoolInst01 BPoolInst02 EXT01 EXT02 EXT03
  • 11. Performance Tuning
  • 12. Performance Tuning <ul><li>Buffer Pool </li></ul><ul><ul><li>O InnoDB Buffer Pool é configurado através das seguintes variáveis de ambiente: </li></ul></ul><ul><ul><ul><li>innodb_buffer_pool_size </li></ul></ul></ul><ul><ul><ul><ul><li>Poderá ser configurado com até 80% da memória disponível na máquina servidora na qual o MySQL roda; </li></ul></ul></ul></ul><ul><ul><ul><li>innodb_buffer_pool_size_instances </li></ul></ul></ul><ul><ul><ul><ul><li>Cada instância deverá contar com o mínimo de 1GB de espaço para ser possível o particionamento do Buffer Pool; </li></ul></ul></ul></ul><ul><ul><li>O comportamento do LRU poderá ser configurado através das seguintes variáveis de ambiente: </li></ul></ul><ul><ul><ul><li>innodb_old_blocks_pct </li></ul></ul></ul><ul><ul><ul><li>innodb_old_blocks_time </li></ul></ul></ul>
  • 13. Performance Tuning <ul><li>Buffer Pool – Monitoramento </li></ul><ul><ul><li>---------------------- </li></ul></ul><ul><ul><li>BUFFER POOL AND MEMORY </li></ul></ul><ul><ul><li>---------------------- </li></ul></ul><ul><ul><li>Total memory allocated 8791261184; in additional pool allocated 0 </li></ul></ul><ul><ul><li>Buffer pool size 524288 </li></ul></ul><ul><ul><li>Free buffers 0 </li></ul></ul><ul><ul><li>Database pages 524203 </li></ul></ul><ul><ul><li>Old database pages 193484 </li></ul></ul><ul><ul><li>Modified db pages 0 </li></ul></ul><ul><ul><li>Pending reads 0 </li></ul></ul><ul><ul><li>Pending writes: LRU 0, flush list 0, single page 0 </li></ul></ul><ul><ul><li>Pages made young 6878082, not young 0 </li></ul></ul><ul><ul><li>0.00 youngs/s, 0.00 non-youngs/s </li></ul></ul><ul><ul><li>Pages read 7181405, created 2327676, written 2436786 </li></ul></ul><ul><ul><li>0.00 reads/s, 0.00 creates/s, 0.44 writes/s </li></ul></ul><ul><ul><li>Buffer pool hit rate 1000 / 1000, young-making rate 0 / 1000 not 0 / 1000 </li></ul></ul><ul><ul><li>LRU len: 524203, unzip_LRU len: 0 </li></ul></ul><ul><ul><li>I/O sum[134]:cur[0], unzip sum[0]:cur[0] </li></ul></ul>
  • 14. Performance Tuning <ul><li>Buffer Pool – Monitoramento </li></ul><ul><ul><li>A cada 15 segundos um novo resultado de monitoramento do InnoDB, de Locks e do Tablespace (compartilhado) do InnoDB será gravado no log de erros do MySQL ou será impresso no mysql client; </li></ul></ul>mysql&gt; CREATE TABLE mysql.innodb_monitor (i int) ENGINE=InnoDB; Query OK, 0 rows affected (0.24 sec) mysql&gt; CREATE TABLE mysql.innodb_lock_monitor (i int) ENGINE=InnoDB; Query OK, 0 rows affected (0.01 sec) mysql&gt; CREATE TABLE mysql.innodb_tablespace__monitor (i int) ENGINE=InnoDB; Query OK, 0 rows affected (0.00 sec)
  • 15. Performance Tuning <ul><li>[root@mgm01 ~]# cat mysqld.err | less </li></ul><ul><li>===================================== </li></ul><ul><li>111129 22:45:56 INNODB MONITOR OUTPUT </li></ul><ul><li>===================================== </li></ul><ul><li>Per second averages calculated from the last 20 seconds </li></ul><ul><li>----------------- </li></ul><ul><li>BACKGROUND THREAD </li></ul><ul><li>----------------- </li></ul><ul><li>srv_master_thread loops: 4 1_second, 4 sleeps, 0 10_second, 7 background, 7 flush </li></ul><ul><li>srv_master_thread log flush and writes: 4 </li></ul><ul><li>---------- </li></ul><ul><li>SEMAPHORES </li></ul><ul><li>---------- </li></ul><ul><li>OS WAIT ARRAY INFO: reservation count 4, signal count 4 </li></ul><ul><li>Mutex spin waits 2, rounds 60, OS waits 0 </li></ul><ul><li>RW-shared spins 5, rounds 150, OS waits 4 </li></ul><ul><li>RW-excl spins 0, rounds 0, OS waits 0 </li></ul><ul><li>Spin rounds per wait: 30.00 mutex, 30.00 RW-shared, 0.00 RW-excl </li></ul><ul><li>: </li></ul>
  • 16. Performance Tuning <ul><li>Variáveis de Ambiente </li></ul><ul><ul><li>innodb_flush_method = [ O_DIRECT | O_DSYNC ] </li></ul></ul><ul><ul><ul><li>O_DIRECT , estável e já disponível em MS Win e Unix Like systems; </li></ul></ul></ul><ul><ul><ul><li>O_SYNC , mais rápido, instável, problemas com double write ; </li></ul></ul></ul><ul><ul><li>innodb_max_dirty_pages_pct = % - (default 90) </li></ul></ul><ul><ul><ul><li>Quantidade de páginas sujas que serão acumuladas antes do processo de flush, que esvaziará essa área do buffer pool em disco, aplicando as alterações de dados nos arquivos de dados em disco; </li></ul></ul></ul><ul><ul><li>innodb_read_io_threads = 1 ... 64 – default 4 </li></ul></ul><ul><ul><ul><li>Número de threads para ler blocos de dados ainda não carregados na memória – início da estratégia de read-ahead (leitura *sequêncial); </li></ul></ul></ul><ul><ul><li>innodb_write_io_threads = 1 ... 64 – default 4 </li></ul></ul><ul><ul><ul><li>Número de threads destinadas às escritas de páginas sujas em disco – caso o valor seja maior que 4, innodb_flush_method = O_DIRECT ; </li></ul></ul></ul>
  • 17. Performance Tuning <ul><li>Variáveis de Ambiente </li></ul><ul><ul><li>innodb_max_merge_io = 1 ... 64 – default 64 </li></ul></ul><ul><ul><ul><li>Quantidade de requisições de recuperação de blocos que fazem parte de uma mesma página que podem estar separados entre memória (buffer pool) e disco – quanto mais blocos de uma mesma extensão estiver em buffer, melhor é para realização de sequential read-ahead ; </li></ul></ul></ul><ul><ul><li>innodb_flush_log_at_trx_commit = [0,1,2] – default 1 </li></ul></ul><ul><ul><ul><li>Determina como o arquivo de log será aberto e as páginas sujas escritas em tais arquivos, ou “a cada COMMIT”, ou “a cada COMMIT e de tempos em tempos” ou ainda somente de “tempos em tempos”; </li></ul></ul></ul><ul><ul><li>innodb_additional_mem_pool_size = 1M – default </li></ul></ul><ul><ul><ul><li>Interessante que o dicionário de dados ou metadados do InnoDB permaneça também em memória, facilitando as consultas que possam ser realizadas ao mesmo; </li></ul></ul></ul>
  • 18. Performance Tuning <ul><li>Variáveis de Ambiente </li></ul><ul><ul><li>innodb_log_buffer_size = 8M – default </li></ul></ul><ul><ul><ul><li>Quantidade de logs que serão armazenados até que um flush seja realizado. Para bancos que são alvos de grandes transações, interessantes ter esta área maior para suportar armazenar mais logs em memória, realizar o COMMIT e então ir para o disco – o contrário será pressão de I/O sentida pela hardware do servidor; </li></ul></ul></ul><ul><ul><li>innodb_file_format = [ANTELOPE | BARRACUDA] </li></ul></ul><ul><ul><ul><li>Caso esteja utilizando MySQL 5.5, sem dúvida é interessante alterar o formato de arquivo para BARRACUDA, fast index creation, data compression... </li></ul></ul></ul><ul><ul><li>innodb_file_per_table = OFF – default </li></ul></ul><ul><ul><ul><li>Para utilizar a compressão de dados e outros recursos do InnoDB Plugin 1.0.0 ++ com o MySQL 5.5, condição sine-qua-non ! </li></ul></ul></ul>
  • 19. Performance Tuning <ul><li>As variáveis de status são contadores em tempo real das operações realizadas no MySQL; </li></ul><ul><ul><li>Todas as áreas do MySQL estão cobertas; </li></ul></ul><ul><ul><li>Se apresentam como contadores </li></ul></ul><ul><ul><ul><li>Bytes; </li></ul></ul></ul><ul><ul><ul><li>Quantidade de vezes; </li></ul></ul></ul><ul><ul><li>São consultadas com SHOW STATUS </li></ul></ul><ul><ul><ul><li>Sintaxe aceita o operador LIKE </li></ul></ul></ul>mysql&gt; SHOW STATUS LIKE &apos;innodb_buffer_pool%&apos;; ... 13 rows in set (0.08 sec)
  • 20. Performance Tuning <ul><ul><li>mysql&gt; SHOW STATUS LIKE &apos;innodb_buffer_pool%&apos;; </li></ul></ul><ul><ul><li>+---------------------------------------+-----------+ </li></ul></ul><ul><ul><li>| Variable_name | Value | </li></ul></ul><ul><ul><li>+---------------------------------------+-----------+ </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_data | 524114 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_dirty | 3 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_flushed | 1752442 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_free | 0 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_misc | 174 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_pages_total | 524288 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_read_ahead_rnd | 0 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_read_ahead | 3246072 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_read_ahead_evicted | 570 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_read_requests | 369360364 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_reads | 18141 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_wait_free | 0 | </li></ul></ul><ul><ul><li>| Innodb_buffer_pool_write_requests | 53387370 | </li></ul></ul><ul><ul><li>+---------------------------------------+-----------+ </li></ul></ul><ul><ul><li>13 rows in set (0.08 sec) </li></ul></ul>
  • 21. Performance Tuning
  • 22. Performance Tuning <ul><li>Logs de Transação </li></ul><ul><ul><li>Interessante que não se trabalhe com o tamanho nem a quantidade de logs padrão de instalação; </li></ul></ul><ul><ul><li>A soma da quantidade de arquivos vezes o espaço que cada um deles têm não pode ser maior ou igual à 4GB; </li></ul></ul><ul><ul><li>Verifique a variável de status Innodb_log_waits para saber se os logs estão pequenos para a operação atual; </li></ul></ul>mysql&gt; SHOW STATUS LIKE &apos;innodb_log_waits&apos;; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | Innodb_log_waits | 21 | +------------------+-------+ 1 row in set (0.00 sec)
  • 23. Performance Tuning <ul><li>Logs de Transação </li></ul><ul><ul><li>Para alterar os logs de transação, utilize sua janela de manutenção e após um backup full , pare o MySQL, mova ou remova os logs atuais e reconfigure este comportamento no arquivo de configurações – my.cnf: </li></ul></ul><ul><ul><li>[mysqld] </li></ul></ul><ul><ul><li># logs criados em /var/lib/mysql </li></ul></ul><ul><ul><li>innodb_log_file_size = 768M </li></ul></ul><ul><ul><li>innodb_log_files_in_group = 4 </li></ul></ul><ul><ul><li># criando logs em outro path </li></ul></ul><ul><ul><li># innodb_log_group_home_dir = /disk2/innologs </li></ul></ul>
  • 24. MySQL 5.6 O que vem por aí!
  • 25. Thank you...

×