Как определить размер индексов в MySQL - программирование
Подтвердить что ты не робот

Как определить размер индексов в MySQL

Я хочу определить размер моих индексов, это индексы первичного ключа. Это происходит в кластере mysql, но я не думаю, что это важно.

4b9b3361

Ответ 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, при просмотре структуры таблицы есть ссылка "Детали" внизу. После того, как вы нажмете на него, он покажет вам общий размер индексов, которые вы указали в таблице, где указано "Использование пространства".

Я не думаю, что он показывает вам каждый индекс индивидуально, хотя.