Innodb um arquivo por tablespace

2

Estou entrando em um ambiente que usa o MySQL e Innodb como o mecanismo de armazenamento. Gostaria de ativar o innodb_file_per_table para aumentar o desempenho. Considerando que todos os bancos de dados / tabelas estão atualmente armazenados no arquivo ibdata1 / default ibdata, a opção innodb_file_per_table somente afetará as novas tabelas criadas depois que eu definir essa diretiva?

Qual seria a melhor maneira de obter o banco de dados existente e dividir cada tabela em seu próprio arquivo ibd? Eu teria que descarregar / recuperar todas as tabelas para que isso acontecesse?

    
por nulltek 20.05.2013 / 00:34

2 respostas

1

link :

The --innodb_file_per_table option affects only table creation, not access to 
existing tables. If you start the server with this option, new tables are 
created using .ibd  files, but you can still access tables that exist in the 
shared tablespace. If you start the server without this option, new tables are 
created in the shared tablespace, but you can still access any tables that were
created using multiple tablespaces.

E sim, um dump e uma restauração são necessários para mover as tabelas existentes para seus próprios arquivos.

    
por 20.05.2013 / 00:53
2

Concordo com as respostas e comentários do @ faker (+1 para a resposta dele), mas ainda há uma coisa importante a fazer:

Antes de você desligar o mysql, você precisa executar SET GLOBAL innodb_fast_shutdown = 0; . Por quê?

Isso eliminará completamente todas as informações transacionais deixadas no ib_logfile0 e no ib_logfile1. O tempo de desligamento é maior, mas nada em termos de dados transacionais não confirmados com linger. Assim, não haverá dados perdidos fazendo este processo.

Aqui está o meu post no StackOverflow como fazer: link

    
por 20.05.2013 / 19:00