2016-05-17 2 views
0

В настоящее время я застрял в ситуации, чтобы найти фрагментированные таблицы, через запросMysql как найти таблицу фрагментирована

Я использую SHOW TABLE STATUS

Его дает мне детали, как

table_name, schema_Name, Data_Length, Index_Length, Data_Free и т. д.

Использование этой информации означает, что эта цифра равна FRAGMENTED

Мне нужно написать запрос, который дает имя фрагментированных таблиц.

Заранее спасибо.

Примечание: Я google, но я не получил удовлетворительного ответа на это.

ответ

0

Вы должны использовать запрос

select 
    ENGINE, 
    TABLE_NAME, 
    Round(DATA_LENGTH/1024/1024) as data_length , 
    round(INDEX_LENGTH/1024/1024) as index_length, 
    round(DATA_FREE/ 1024/1024) as data_free 
from information_schema.tables 
where DATA_FREE > 0; 

После, вы должны получить коэффициент фрагментации: (data_free/(data_length + index_length)) * 100

Если этот номер довольно большой, я бы сказал, более 10%, тогда ваш стол фрагментирован. 10% - номер для обсуждения. Некоторые администраторы используют 20%. Во всяком случае, если вы видите большое количество, то вам стоит обратить внимание на таблицу

+0

Как вы сказали (data_free/(data_length + index_length)) * 100. Это дает мне значение выхода очень сильно (8295000.0000). – Aashick

+0

дать мне отдельные data_free, data_length и index_length –

+0

Затем таблица фрагментирована? – Aashick

Смежные вопросы