Eu tenho um servidor mysql 5.1 com um banco de dados de aproximadamente 450 tabelas, ocupando 4 GB. A grande maioria dessas tabelas (com exceção de 2) é MyIsam. Isso tem sido bom na maioria das vezes (não precisa de transações), mas o aplicativo está obtendo tráfego e determinadas tabelas foram impactadas devido ao bloqueio de tabelas nas atualizações. Essa é a razão pela qual 2 das tabelas são do InnoDB agora.
A conversão nas tabelas menores (100 mil linhas) não leva muito tempo, causando um tempo de inatividade mínimo. No entanto, algumas das minhas tabelas de rastreamento estão se aproximando de 50 milhões de linhas. Existe uma maneira de acelerar um jogo ALTER TABLE...ENGINE InnoDB
em grandes mesas? E, se não, existem outros métodos para converter minimizar o tempo de inatividade nessas tabelas com muita gravação?
fonte
Respostas:
Deixe-me começar dizendo: eu odeio o ALTER. É mau, IMHO.
Digamos, este é seu esquema de tabela atual -
Aqui está o caminho que eu recomendo -
Crie um novo objeto de tabela que substitua o antigo:
Insira todas as linhas da tabela antiga por nome na nova tabela:
Fumo teste sua migração:
Troque os nomes das tabelas para que você possa manter um backup caso precise reverter.
Prossiga para o teste de regressão.
Essa abordagem se torna cada vez mais preferível com tabelas com vários índices e milhões de linhas.
Pensamentos?
fonte
ALTER TABLE
demoraria mais do queINSERT INTO...SELECT
50 milhões de linhas?1) A proteção contra perdas é uma função da paranóia. Sempre faça um backup. Se você é realmente paranóico, faça um backup e restaure-o.
2) Esta página do manual do MySQL possui instruções para converter tipos de tabelas.
3) O PostgreSQL faz pesquisa de texto completo , o Sphinx Engine parece fazer isso no MySQL
fonte
É X vezes mais fácil otimizar o servidor inteiro (configuração de memória, caches, índices) quando você possui apenas um mecanismo. Misturar o myisam com o innodb em bancos de dados grandes sempre fica preso em algum momento forçado por alguns a fazer com que o mecanismo funcione bem (mas não é excelente :)
Eu recomendo que você se interesse por alguns mecanismos de pesquisa de texto completo, como sphinx , lucene ( solr ) e se livre da camada do banco de dados.
fonte