MySql: consulta Otimizar Tabela

1

É possível descobrir, por quanto o "Optimize" comando ser capaz de desfragmentar uma determinada tabela? Eu só quero descobrir essa informação de antemão.

    
por dharm0us 08.01.2010 / 10:08

2 respostas

1

Eu tive algumas dúvidas sobre essa resposta :-) Na verdade, é tão fácil quanto procurar pelo valor - é tudo em information_schema.tables! Procure o campo chamado data_free, ele tem o valor correto e também se comporta corretamente nos exemplos que eu fiz:

use test;
create table test1 as select * from information_schema.tables;
alter table test1 engine = myisam; -- not even necessary
select * from information_schema.tables where table_name = 'test1'\G
delete from test1 limit 10;
select * from information_schema.tables where table_name = 'test1'\G
analyze table test1;
select * from information_schema.tables where table_name = 'test1'\G
optimize table test1;
select * from information_schema.tables where table_name = 'test1'\G
    
por 08.01.2010 / 13:39
1

information_schema.tables sempre mostra o comprimento correto dos dados, então você pode comparar o campo data_length com uma estimativa aproximada do comprimento de dados necessário (avg_row_length * table_rows), mas somente depois de atualizar as estatísticas com a tabela de análise:

analyze table 'TABLE_TO_LOOK_UP'; -- to get row count etc. right

SELECT table_name,
concat( round((data_length - (avg_row_length * table_rows)) / 1024 / 1024, 2) , 'M' ) very_theoretical_size_difference_in_MB
FROM information_schema.tables
WHERE table_name = 'TABLE_TO_LOOK_UP';
    
por 08.01.2010 / 10:55

Tags