InnoDB ou MyISAM: que motor de armazenamento usar, e o que fazer a uma tabela antiga

Use InnoDB. É o motor por omissão do MariaDB que corre na hospedagem, aguenta melhor falhas e escritas ao mesmo tempo, e é o que as aplicações actuais esperam. O MyISAM é um motor mais antigo que ainda aparece em bases de dados criadas há muitos anos. Se encontrar tabelas MyISAM no seu site, na maioria dos casos convém passá-las para InnoDB.

O que cada motor faz de diferente

Característica InnoDB MyISAM
Transacções Sim: um grupo de alterações grava-se todo ou nada. Não.
Bloqueio ao escrever Por linha: várias escritas em simultâneo. Pela tabela inteira: uma escrita faz esperar as outras.
Chaves estrangeiras Sim. Não.
Depois de uma falha Recupera-se sozinho, com base no seu registo interno. A tabela pode ficar marcada como danificada e pedir reparação. Veja uma tabela marcada como crashed.
Pesquisa de texto (FULLTEXT) Sim, nas versões actuais. Sim.
Tamanho em disco Costuma ocupar mais. Costuma ocupar menos.

O MyISAM tem uma vantagem pequena: contar todas as linhas de uma tabela, sem condição, é instantâneo. É raro isso decidir seja o que for num site.

Ver que motor tem cada tabela

1 No cPanel, abra o phpMyAdmin e escolha a base de dados na lista da esquerda. Veja criar bases de dados e usar o phpMyAdmin.
2 Na lista de tabelas há uma coluna com o tipo (o motor) de cada uma. Ou, no separador SQL, corra:SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE();
3 Anote quais são MyISAM.

Passar uma tabela para InnoDB

1 Faça uma cópia da base de dados primeiro. Veja exportar uma base de dados com o phpMyAdmin. Se alguma coisa correr mal, volta atrás.
2 Escolha um momento calmo. A conversão copia a tabela, e uma tabela grande demora e fica bloqueada até acabar.
3 No phpMyAdmin, abra a tabela, vá a Operations (Operações) e, em Storage Engine, escolha InnoDB. Ou, no separador SQL, uma tabela de cada vez:ALTER TABLE nome_da_tabela ENGINE=InnoDB;
4 Percorra o site: páginas, formulários, início de sessão. Só depois converta a tabela seguinte.
Converta de tabela em tabela, não tudo de uma vez, e nunca sem cópia. Numa base de dados muito grande a conversão pode esgotar o tempo da ligação ou ocupar espaço a mais na conta. Se ver «MySQL server has gone away» a meio, veja as causas, por ordem de probabilidade.
Uma base de dados WordPress recente já nasce em InnoDB. Só vale a pena olhar se o site é antigo, veio de outro fornecedor ou foi criado por um programa muito antigo. Se quiser aproveitar para aliviar a base, veja limpar e optimizar a base de dados no phpMyAdmin.

Tem tabelas antigas e não quer arriscar a conversão? Diga-nos a base de dados e vemos consigo.

Abrir um pedido de suporte

VEJA TAMBÉM

Uma tabela marcada como crashed: o que significa e como reparar

Criar bases de dados e usar o phpMyAdmin

MySQL ou MariaDB: qual corre aqui, e se isso importa

Planos de hospedagem e o que cada um inclui

PRODUTO RECOMENDADO

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?