Existem algumas opções de configuração que você deve pensar antes de começar.
Desde que você não esteja usando o myisam, você pode alocar com segurança quase toda (mantenha o suficiente para que o seu sistema operacional funcione confortavelmente e o suficiente para sua max_connections
) sua memória innodb_buffer_pool
. O interessante do InnoDB é que ele lida com quase todo o material de memória por si só, sem a necessidade de separar itens como caches de consulta, buffers de chave etc.
Eu recomendo que você ative innodb_file_per_table
, simplesmente porque torna muito mais fácil navegar no sistema de arquivos e ver quanto espaço as diferentes tabelas e bancos de dados precisam. Você ainda precisará de um arquivo ibdata genérico para uso interno do InnoDB, mas você pode apenas defini-lo como 10M:autoextend
. Não é necessário definir muitos arquivos de dados innodb diferentes com tamanhos pré-alocados.
innodb_log_file_size
e innodb_log_buffer_size
combinado deve ser maior que dez vezes o seu maior objeto de blob, se você tiver muitos objetos grandes. Se não (e não deveria [ 1 , 2 ]), não há realmente nenhuma necessidade de se preocupar muito com isso. Confira o MySQL Performance Blog para obter um relatório detalhado sobre como calcular.
E quando você rodar o MySQL por um tempo, verifique suas configurações com o MySQLTuner ou o MySQL Tuning Primer .
Para um relatório mais detalhado, tente mysqlreport e, para monitoramento ao vivo, verifique mytop .
Uma pequena "surpresa" para mim foi que o innodb usa, por padrão, um arquivo para todos os bancos de dados / tabelas. Ao contrário das tabelas MyISAM que usam um diretório por banco de dados e arquivos por tabela / índice de tabela.
Pode ser importante se você estiver acostumado a reduzir os arquivos físicos em uma tabela (otimizar a tabela xxx)
fonte