MySQL에서 인덱스 크기를 알아내는 방법
내 인덱스의 크기를 확인하고 싶습니다. 기본 키 인덱스입니다. 이것은 mysql 클러스터에 있지만 그다지 중요하지 않다고 생각합니다.
나는 이것이 당신이 찾고있는 것이라고 생각합니다.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Vajk Hermecz의 대답을 확장합니다.
이것은 크기별로 정렬 된 PRIMARY (테이블 자체)없이 모든 인덱스 크기 (MB)를 얻을 수있는 방법입니다.
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;
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';
에 MyISAM
, 각 인덱스 블록이 4 KB
로 가득 페이지 fill_factor
인덱스 레코드와, 각각의 존재는 key length + 4
바이트 길이.
Fill factor
일반적으로 2/3
의 InnoDB
경우 테이블은 항상에서 클러스터링되며 PRIMARY KEY
별도의 PRIMARY KEY
인덱스 가 없습니다.
다음은 각 인덱스가 사용한 테이블에 대한 전체 인덱스의 백분율을 제공하기 위해 위의 일부를 수정 한 것입니다. 누군가에게 유용 할 수 있기를 바랍니다.
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'
예제 출력
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
Liam 감사합니다
phpMyAdmin을 사용하면 테이블 구조를 볼 때 하단 어딘가에 세부 정보 링크가 있습니다. 클릭하면 공간 사용량으로 표시된 테이블에있는 인덱스의 총 크기가 표시됩니다.
그래도 각 인덱스를 개별적으로 보여주지는 않는다고 생각합니다.
이 문서에서는 인덱스 크기를 계산하는 방법을 결정합니다. http://aadant.com/blog/2014/02/04/how-to-calculate-a-specific-innodb-index-size/
SELECT SUM(stat_value) pages, index_name,
SUM(stat_value)*@@innodb_page_size size
FROM mysql.innodb_index_stats WHERE table_name='t1'
AND stat_name = 'size' GROUP BY index_name;
참고 URL : https://stackoverflow.com/questions/781873/how-to-figure-out-size-of-indexes-in-mysql
'Programing' 카테고리의 다른 글
node_modules를 제외하지 않는 Webpack (0) | 2020.10.26 |
---|---|
_CRT_SECURE_NO_DEPRECATE를 통해 생성 된 경고 비활성화 (0) | 2020.10.26 |
지도 작업에서 튜플 풀기 (0) | 2020.10.26 |
MongoDB는 서버 충돌 후 시작되지 않습니다. (0) | 2020.10.26 |
쿼리와 같은 안전한 ActiveRecord (0) | 2020.10.26 |