Ответ 1
Я думаю, что это то, что вы ищете.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Я хочу определить размер моих индексов, это индексы первичного ключа. Это происходит в кластере mysql, но я не думаю, что это важно.
Я думаю, что это то, что вы ищете.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Если вы используете таблицы InnoDB, вы можете получить размер для отдельных индексов от mysql.innodb_index_stats
. Статистика "размер" содержит ответ на страницах, поэтому вам нужно умножить его на размер страницы, который по умолчанию составляет 16K.
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
Расширение ответа Вайка Хермеца.
Так вы можете получить весь размер индексов в мегабайтах без PRIMARY (который является самой таблицей), упорядоченный по размеру.
SELECT database_name, table_name, index_name,
round(stat_value*@@innodb_page_size/1024/1024, 2) size_in_mb
FROM mysql.innodb_index_stats
WHERE stat_name = 'size' AND index_name != 'PRIMARY'
ORDER BY 4 DESC;
В MyISAM
каждый индексный блок 4 KB
заполняется до fill_factor
с индексными записями, каждый из которых имеет длину key length + 4
.
Fill factor
обычно 2/3
Что касается InnoDB
, таблица всегда кластеризована на PRIMARY KEY
, нет отдельного индекса PRIMARY KEY
Не используется мной, но возможно MySQL Index Analyzer может оказаться полезным.
Используя phpMyAdmin, при просмотре структуры таблицы есть ссылка "Детали" внизу. После того, как вы нажмете на него, он покажет вам общий размер индексов, которые вы указали в таблице, где указано "Использование пространства".
Я не думаю, что он показывает вам каждый индекс индивидуально, хотя.
В этой статье определите, как вычислить размер индекса. http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/