MySQL에서 인덱스 크기를 확인하는 방법
인덱스의 크기를 결정하고 싶습니다. 인덱스는 기본 키 인덱스입니다.이것은 우연히 mysql 클러스터에 있지만 나는 그것이 중요하다고 생각하지 않는다.
이게 당신이 찾고 있던 것 같네요.
show table status from [dbname]
http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
Vajk Hermecz의 답변을 확장합니다.
이렇게 하면 PARMY(테이블 자체) 없이 크기별로 정렬된 모든 인덱스 크기를 메가바이트 단위로 가져올 수 있습니다.
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 size_in_mb DESC;
InnoDB 테이블을 사용하는 경우 개별 인덱스의 크기를 다음에서 얻을 수 있습니다.mysql.innodb_index_stats
. 'size' 통계에는 페이지 단위로 답변이 포함되어 있으므로 페이지 크기에 곱해야 합니다. 페이지 크기는 기본적으로 16K입니다.
select database_name, table_name, index_name, stat_value*@@innodb_page_size
from mysql.innodb_index_stats where stat_name='size';
여기 각 인덱스가 사용한 테이블의 총 인덱스의 백분율을 제공하기 위해 위의 몇 가지 수정 사항이 있습니다. 이것이 다른 사람에게 유용하기를 바랍니다.
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
리암께
온MyISAM
, 각 인덱스 블록은4 KB
가득 찬 페이지fill_factor
인덱스 레코드와 함께, 각각key length + 4
바이트 길이
Fill factor
통상은2/3
에 대해서는InnoDB
테이블은 항상 에 클러스터화되어 있습니다.PRIMARY KEY
, 따로따로 없습니다.PRIMARY KEY
색인
phpMyAdmin을 사용하면 테이블 구조를 볼 때 아래 어딘가에 Details 링크가 있습니다.클릭하면 Space Usage(공간 사용량)로 표시된 테이블에 있는 인덱스의 총 크기가 표시됩니다.
각각의 지수를 개별적으로 보여주는 것은 아닌 것 같습니다.
이 문서에서는 인덱스 크기를 계산하는 방법을 결정합니다.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' 카테고리의 다른 글
TextArea에서 줄 바꿈 (0) | 2023.01.15 |
---|---|
원칙이 계산/생성된 열을 삭제하지 않도록 하는 방법 (0) | 2023.01.15 |
My Vue.js Vuex 스토어에는 GET 요청을 하는 두 가지 작업이 있습니다.두 번째 액션이 작동하려면 첫 번째 액션의 응답이 필요합니다.어떻게 하는 거야? (0) | 2023.01.15 |
Panda 시리즈 전체를 예쁘게 인쇄 / Data Frame (0) | 2023.01.15 |
Python에서 특정 크기의 빈 목록을 만듭니다. (0) | 2023.01.12 |