A tabela no banco de dados mysql fica danificada toda vez que o servidor trava

1

Há algo me deixando louco ... Eu tenho uma tabela em um banco de dados, que é mais de 1,4 GB e tem cerca de 500.000 registros.

O problema é que todas as vezes, ou quase todas as vezes, que meu servidor falha, devido a sobrecarga ou qualquer outro problema, essa tabela fica danificada.

Isso é o que eu acho, porque o site que o usa, carrega para sempre e o servidor fica sobrecarregado. Para corrigir, preciso executar a tabela de reparo TABLE.

Existe algo que eu possa fazer para evitar isso?

    
por valter 03.08.2011 / 17:19

3 respostas

5

Converta a tabela para InnoDB . Existem várias razões para o fazer:

REASON 1 : As tabelas MyISAM realizam um bloqueio total de tabela com cada INSERT, UPDATE e DELETE. O InnoDB executa bloqueios em nível de linha que ainda podem ser lidos graças ao MVCC (Controle de Concorrência Multiversão)

REASON 2 : A recuperação de falhas com o InnoDB pode ser tão simples quanto reinicializar o MySQL, pois os redo logs registram transações não confirmadas e são processadas através de commits normais de transações ou durante a inicialização do mysql.

REASON 3 : As tabelas MyISAM mantêm um contador em seus cabeçalhos para identificadores de arquivos abertos na tabela. A tabela MyISAM mais simples é a de que os dados são bons, mas a contagem de identificadores de arquivos abertos é maior que zero quando a tabela é fechada. Realizar 'myisamchk -r' ou REPAIR TABLE em uma tabela MyISAM sempre corre o risco de perder uma ou mais linhas de dados.

RAZÃO 4 : O InnoDB tem ACID (Atomicidade, Consistência, Isolamento, Durabilidade) . As transações podem consistir em uma ou mais instruções SQL e tratá-las como uma operação (Thus, Atomicity). Os dados são totalmente confirmados ou totalmente revertidos (Consistência e Durabilidade). Cada DB Connection pode ter sua própria visão dos dados enquanto está sendo atualizada sem ser bloqueada (Thus Isolation por meio do MVCC).

    
por 03.08.2011 / 17:29
1

Uma tabela que não está em estado consistente (por exemplo, se o servidor travar) deve precisar de um reparo para verificar e reparar qualquer problema devido ao estado inconsistente do disco (parcialmente muda completamente, etc.) - isso é muito por design.

Eu recomendaria colocar esse esforço em menos falhas no servidor.

    
por 03.08.2011 / 17:25
1

Pode valer a pena investir algum tempo na estabilização do servidor, porque não acho que você possa evitar a correção das tabelas.

    
por 03.08.2011 / 17:28