MySQL/InnoDB-4.0.13, 20 de Maio de 2003
O InnoDB
agora suporta ALTER TABLE DROP FOREIGN KEY
. Você deve usar SHOW CREATE TABLE
para ver a ID de chaves estrangeiras geradas internamente quando quiser apagar uma chave estrangeira.
SHOW INNODB STATUS
agora esxibe informações detalhadas do último erro deFOREIGN KEY
eUNIQUE KEY
detectados. Se você não entender porque oInnoDB
retorna o erro 150 de umCREATE TABLE
, você pode utilizar isto para estudar a razão.ANALYZE TABLE
agora também funciona para tabelas do tipoInnoDB
. Ela faz 10 inserções aleatórias para cada das árvores de índices e atualiza a estimativa da cardinalidade do índice adequadamente. Note que como isto é apenas uma estimativa, repetidas execuções deANALYZE TABLE
podem produzir diferentes números. O MariaDB usa a estimativa de cardinalidade do índice apenas an otimização de joins. Se alguma join não é otimizada de modo apropriado, você pode tentar usarANALYZE TABLE
.- A capacidade de commit de grupo do
InnoDB
agora também funciona quando o log binário do MariaDB está habilitado. Deve haver mais de 2 threads cliente para commit de grupo estar ativo. - Alterado o valor padrão de
innodb_flush_log_at_trx_commit
de 0 para 1. Se você não tiver especificado-o explicitamente em seumy.cnf
, e sua aplicação executar muito mais lentamente nesta nova distribuição é porque o valor 1 faz com que seja descarregado um log para disco a cada commit de transações. - Adicionado uma nova variável global configurável de sistema do MariaDB (
innodb_max_dirty_pages_pct
). Ela é um interio na faixa de 0 - 100. O padrão é 90. A thread principal noInnoDB
tenta descarregar as páginas da área de buffer já que grande parte deste percetual ainda não foi descarregado em nenhum momento. - Se
innodb_force_recovery=6
, não deixar oInnoDB
fazer reparação de páginas corrompidas baseadas no buffer de dupla escrita. - O
InnoDB
agora inica mais rápido porque ele não define a memória na área de buffer para zero. - Corrigido um erro: a definição
FOREIGN KEY
doInnoDB
era confudida com as palavras chaves 'foreign key' dentro dos comentários do MariaDB. - Corrigido um ero: se você apagasse um tablea para qual havia uma referência de chave estrangeira, e posteriormente criasse a mesma tabela com tipo de colunas não correspondentes, o
InnoDB
podia entrar em dict0load.c, na funçãodict_load_table
. - Corrigido um erro:
GROUP BY
eDISTINCT
podia tratar valoresNULL
como diferentes. O MariaDB também falahva ao fazer o lock da próxima chave no caso de uma faixa de índice vazia. - Corrigido um erro: não faz COMMIT da transação atual quando uma tabela MyISAM é atualizada; isto também faz com que
CREATE TABLE
não faça commit de uma transaçãoInnoDB
, mesmo quando o log binário estiver habilitado. - Corrigido um erro: não permite que
ON DELETE SET NULL
modifique a mesma tabela onde o delete foi feito; podemos permití-lo porqeu into não pode produzir loops infinitos em operações em cascata. - Corrigido um erro: permitir
HANDLER PREV
eNEXT
também depois de posicionar o cursor com uma busca única na chave primária - Corrigido um erro: se
MIN()
ouMAX()
resultasse em um deadlock ou em esgotamento do tempo de espera do lock, o MariaDB não retornava um erro, masNULL
como o valor da função. - Corrigido um erro: o
InnoDB
esquecia de chamarpthread_mutex_destroy()
quando uma tabela era apagada. Isto podia causar perda de memória no FreeBSD e outros Unix, exceto o Linux.