Mysql 5.5 Desfragmentação não reduzindo a porcentagem de fragmentação

1

Estamos executando OPTIMIZE TABLE, mas não vemos nenhuma redução de fragmentação. Eles são tão altos quanto 120% a 200%.

Estou calculando a% de fragmentação usando isto: Data_Free / (Data_Length + Index_Length)

Minhas tabelas estão usando o mecanismo INNODB e "innodb_file_per_table" definido como 1.

O que estou perdendo?

Alguma coisa mudou com o Mysql 5.5+ em diante?

TIA

    
por Abhishek Ravi 01.03.2012 / 06:42

2 respostas

2

"OPTIMIZE TABLE" é somente para tabelas MyISAM - o InnoDB não sofre de tabelas de 'fragmentação' como do MyISAM. Portanto, você não precisa otimizá-los.

Além disso, seu método de cálculo está incorreto. Como há mais coisas acontecendo do que apenas dados + tamanho do índice.

    
por 01.03.2012 / 06:50
1

ALTER TABLE table_name ENGINE = InnoDB; pode ser usado em tabelas InnoDB para reconstruir a tabela, limpar seus índices e, no caso de usar innodb_file_per_table = 1, redimensionar o arquivo da tabela.

Além disso, o innodb cuida de si mesmo e qualquer lentidão que você possa sofrer depois de executar este comando é porque você reconstruiu a tabela indexada na chave primária e se as chaves secundárias são usadas com mais frequência nas pesquisas do banco de dados, você ve fragmentou-os em vez disso.

O InnoDB tende a entender o armazenamento esparso de dados e provavelmente precisa ser "consertado" com muito menos frequência do que algumas pessoas fazem.

    
por 01.03.2012 / 07:25