O que devo saber antes de ir ao ar com um banco de dados InnoDB?

10

O que um administrador de servidor ou banco de dados deve saber e fazer antes de disponibilizar um banco de dados do InnoDB.

Estou pensando em coisas como definir valores corretos para innodb_buffer_pool_sizeeinnodb_log_file_size

Então, que coisas simples você poderia esquecer de configurar que faria com que o aplicativo usando o banco de dados funcionasse menos do que o ideal?

Jacco
fonte

Respostas:

14

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_sizee innodb_log_buffer_sizecombinado 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 .

Nils-Anders Nøttseter
fonte
Uma coisa a lembrar sobre innodb_file_per_table é que os métodos usados ​​para recuperar o espaço em disco são diferentes. Com os arquivos ibdata, você pode recuperar espaço no espaço de tabela excluindo o final de suas tabelas. Com arquivos de tabela individuais, o espaço não é recuperado pela exclusão, é necessário reconstruir a tabela com a tabela de otimização para retornar espaço ao sistema de arquivos. Otimizar bloqueia a tabela e, portanto, pode causar tempo de inatividade no seu aplicativo.
mtinberg
2

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