Я хочу определить размер моих индексов, это индексы первичного ключа. Это происходит в кластере mysql, но я не думаю, что это важно.
Как определить размер индексов в MySQL
Ответ 1
Я думаю, что это то, что вы ищете.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Ответ 2
Если вы используете таблицы 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';
Ответ 3
Расширение ответа Вайка Хермеца.
Так вы можете получить весь размер индексов в мегабайтах без 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;
Ответ 4
В MyISAM
каждый индексный блок 4 KB
заполняется до fill_factor
с индексными записями, каждый из которых имеет длину key length + 4
.
Fill factor
обычно 2/3
Что касается InnoDB
, таблица всегда кластеризована на PRIMARY KEY
, нет отдельного индекса PRIMARY KEY
Ответ 5
Не используется мной, но возможно MySQL Index Analyzer может оказаться полезным.
Ответ 6
Используя phpMyAdmin, при просмотре структуры таблицы есть ссылка "Детали" внизу. После того, как вы нажмете на него, он покажет вам общий размер индексов, которые вы указали в таблице, где указано "Использование пространства".
Я не думаю, что он показывает вам каждый индекс индивидуально, хотя.
Ответ 7
В этой статье определите, как вычислить размер индекса. http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/