InnoDB é o mecanismo padrão de armazenamento nas versões modernas do MySQL e MariaDB e é suportado em ambientes cPanel atuais. Ele oferece transações, integridade referencial, recuperação após falhas e bloqueio por linha. A disponibilidade de versão e recursos específicos depende do servidor.
InnoDB ou MyISAM
| Recurso | InnoDB | MyISAM |
|---|---|---|
| Transações/rollback | Sim | Não |
| Chaves estrangeiras | Sim | Não |
| Bloqueio | Principalmente por linha | Por tabela |
| Recuperação após falha | Projetada para recuperação | Mais limitada |
| Uso recomendado | Aplicações atuais | Legado/casos específicos |
Verificar o mecanismo
SHOW TABLE STATUS FROM nome_do_banco;
SHOW ENGINES;
No phpMyAdmin, abra o banco e consulte a coluna Type/Engine. Não altere tabelas do sistema nem converta sem confirmar a compatibilidade da aplicação.
Criar tabela InnoDB
CREATE TABLE pedidos (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
criado_em DATETIME NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Converter tabela existente
ALTER TABLE tabela_legada ENGINE=InnoDB;
Esse comando pode bloquear a tabela, usar muito espaço temporário e demorar. Faça dump, teste em homologação, confira espaço, índices, chaves estrangeiras e janela de manutenção. Em tabelas grandes, use estratégia de migração online apropriada.
Limites e desempenho
- índices e consultas mal projetados continuam lentos;
- transações longas aumentam locks e histórico;
- buffer pool e configuração global são responsabilidade do administrador;
- quota da hospedagem inclui arquivos do banco conforme a medição;
- tamanho máximo prático depende de quota, servidor e operação, não só do engine.
Transações na aplicação
Use transações curtas, confirme com COMMIT e reverta com ROLLBACK quando a operação falhar. Não mantenha uma transação aberta enquanto espera API ou interação do usuário. Monitore deadlocks e implemente repetição limitada apenas para erros transitórios conhecidos.
Erros frequentes
“Cannot add foreign key constraint” exige tipos, índices e collation compatíveis. “Table is full” pode significar disco/quota, não limite lógico. Corrupção ou crash recovery deve ser tratada pelo administrador; não apague arquivos ibdata ou redo logs por tentativa.
Veja também como criar banco e usuário e como atualizar MySQL/MariaDB.
Recursos relacionados
Continue com materiais e serviços relacionados ao tema deste guia.