usar - Cómo averiguar el tamaño de los índices en MySQL
usar indices mysql (8)
Aquí hay una adaptación de algunos de los anteriores para también darle el porcentaje del índice total de la tabla que cada índice ha usado, con suerte esto será útil para alguien
select
database_name,
table_name,
index_name,
round((stat_value*@@innodb_page_size)/1024/1024, 2) SizeMB,
round(((100/(SELECT INDEX_LENGTH FROM INFORMATION_SCHEMA.TABLES t WHERE t.TABLE_NAME = iis.table_name and t.TABLE_SCHEMA = iis.database_name))*(stat_value*@@innodb_page_size)), 2) `Percentage`
from mysql.innodb_index_stats iis
where stat_name=''size''
and table_name = ''TargetTable''
and database_name = ''targetDB''
Ejemplo de salida
database_name table_name index_name SizeMB Percentage
targetDB TargetTable id 10 55.55
targetDB TargetTable idLookup 5 27.77
targetDB TargetTable idTest 3 16.66
Saludos, Liam
Quiero determinar el tamaño de mis índices, son índices de clave primaria. Esto sucede que está en el clúster mysql, pero no creo que eso sea significativo.
Creo que esto es lo que estás buscando.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
En MyISAM
, cada bloque de índice tiene 4 KB
página de 4 KB
completada para fill_factor
con registros de índice, cada uno con key length + 4
bytes de longitud.
Fill factor
es normalmente 2/3
En cuanto a InnoDB
, la tabla siempre está agrupada en la PRIMARY KEY
, no hay un índice PRIMARY KEY
separado
En este artículo, determine cómo calcular el tamaño del índice. http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/
Extendiendo la respuesta de Vajk Hermecz.
Así es como puede obtener todos los tamaños de índice, en megabytes, sin el PRIMARIO (que es la tabla en sí), ordenado por tamaño.
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;
No utilizado por mí, pero tal vez MySQL Index Analyzer puede ser útil.
Si está utilizando tablas InnoDB, puede obtener el tamaño para índices individuales de mysql.innodb_index_stats
. La estadística de ''tamaño'' contiene la respuesta, en páginas, por lo que debe multiplicarla por el tamaño de página, que es 16K por defecto .
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name=''size'';
Usando phpMyAdmin, al ver la estructura de la tabla hay un enlace de Detalles en la parte inferior en alguna parte. Una vez que haga clic en él, le mostrará el tamaño total de los índices que tiene en la tabla donde está marcado como Uso del espacio.
Sin embargo, no creo que te muestre cada índice individualmente.