Restrições em Tabelas InnoDB
Tabelas InnoDB não suportam índices fulltext.
- No Windows o InnoDB armazena os nomes de banco de dados e tabelas internamente sempre em letras minúsculas. Para mover bancos de dados em um formato binário do Unix para o Windows ou do Windows para o Unix você deve ter todas os nomes de tabelas e banco de dados em letras minúscula.
- Aviso: NÃO converta o sistema de tabelas MariaDB de MyISAM PARA InnoDB! Isto não é suportado; se você fizer isto o MariaDB não reiniciará até que você restaure o sistema de tabelas antigo de um backup ou os regenere com o script
mysql_install_db
. SHOW TABLE STATUS
não dá estatísticas exatas sobre tabelas InnoDB, exceto sobre o tamanho físico reservado pela tabela. O contador de linha é apenas uma estimativa rude usada na otimização SQL.- Se você tentar criar um índice único em um prefixo de coluna você obterá um erro.
CREATE TABLE T (A CHAR(20), B INT, UNIQUE (A(5))) TYPE = InnoDB;
Se você criar um índice que não seja único em um prefixo de uma coluna, o InnoDB criará um índice sobre toda a coluna.
INSERT DELAYED
não é suportado por tabelas InnoDB.- As operações
LOCK TABLES
do MariaDB não tem conhecimento dos bloqueios de resistro do InnoDBconfigurados em instruções SQL completadas: isto significa que você pode conseguir um bloqueio de tabela mesmo se já existir transações de outros usuários que tiverem bloqueios de registros na mesma tabela. Assim suas operações sobre a tabela poder ter que esperar se eles colidirem com essas travas de outros usuários. Também pode ocorrer um deadlock. No entanto isto não tarz perigo a instegridade da transação, pois o bloqueio de registro definido pelo InnoDB sempre cuidará da integridade. Um bloqueio de tabela também previne que outras transações adquiram mais bloqueios de registros (em um modo de bloqueio conflitante) na tabela. - Uma tabela não pode ter mais de 1000 colunas.
DELETE FROM TABLE
não gera a tabela novamente, mas, ao invés diato, deleta todas as linhas, uma a uma, o que não é rápido. Em versões futuras do MariaDB você poderá usarTRUNCATE
que é mais rápido.- O tamanho de página padrão utilizado no InnoDB é 16KB. Recompilando o código pode se configurá-la com 8 KB a 64 KB. O tamanho máximo de um registro é menos da metade da página de banco de dados nas versões anteriores a 3.23.40 do InnoDB. A partir da distribuição fonte da versão 3.23.41 colunas BLOB e TEXT podem ter até 4 GB e o tamanho total do registro também devem ser menores que 4GB. O InnoDB não armazena campos cjo tamanho é menor que 128 bytes em páginas separadas. Depois do InnoDB modificar o registro armazenando campos grandes em páginas separadas, o tamanho restante da linha deve ser menor que metade da página de banco de dados. O tamanho máximo da chave é de 7000 bytes.
- Em alguns sistemas operacionais os arquivos de dados devem ser menores que 2 GB. O tamanho combinado dos arquivos de log devem ser menores que 4GB.
- O tamanho máximo do tablespace é 4 bilhões de páginas de banco de dados. Este também é o tamanho máximo da tabela. O tamanho mínimo do tabelspace é de 10 MB.
- Quando você reinicia o servidor MySQL, o InnoDB pode reutilizar um valor antigo para uma coluna
AUTO_INCREMENT
. - Você não pode definir o primeiro valor de uma coluna
AUTO_INCREMENT
no InnoDB comCREATE TABLE ... AUTO_INCREMENT=...
(ouALTER TABLE ...
). Para definir este valor insira uma linha com o valor de menos e delete esta linha.