Loading...
MySQL 9.5 Reference Manual 9.5의 28.3.40 The INFORMATION_SCHEMA STATISTICS Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
STATISTICS table은 table index에 대한 정보를 제공합니다.
STATISTICS 내에서 table statistics를 나타내는 column은 캐시된 값을 보유합니다.
information_schema_stats_expiry
system variable은 캐시된 table statistics가 만료되기까지의 기간을 정의합니다.
기본값은 86400초(24시간)입니다.
캐시된 statistics가 없거나 statistics가 만료된 경우,
table statistics column을 조회할 때 스토리지 엔진으로부터 statistics가 조회됩니다.
특정 table에 대해 언제든지 캐시된 값을 갱신하려면
ANALYZE TABLE을 사용하십시오.
항상 스토리지 엔진으로부터 최신 statistics를 직접 조회하려면
information_schema_stats_expiry=0
로 설정하십시오.
자세한 내용은
Section 10.2.3, “Optimizing INFORMATION_SCHEMA Queries”를 참조하십시오.
참고
innodb_read_only system
variable이 활성화되어 있으면,
ANALYZE TABLE은
데이터 딕셔너리 내의 statistics table을 갱신할 수 없기 때문에 실패할 수 있으며,
해당 table은 InnoDB를 사용합니다.
key 분포를 갱신하는 ANALYZE TABLE 작업의 경우,
작업이 table 자체(예를 들어 MyISAM table인 경우)를 갱신하더라도
실패가 발생할 수 있습니다.
갱신된 분포 statistics를 얻으려면
information_schema_stats_expiry=0
로 설정하십시오.
STATISTICS table에는 다음과 같은 column이 있습니다:
TABLE_CATALOG
index를 포함하는 table이 속한 catalog의 이름입니다.
이 값은 항상 def입니다.
TABLE_SCHEMA
index를 포함하는 table이 속한 스키마(데이터베이스)의 이름입니다.
TABLE_NAME
index를 포함하는 table의 이름입니다.
NON_UNIQUE
index에 중복이 허용되지 않으면 0, 허용되면 1입니다.
INDEX_SCHEMA
index가 속한 스키마(데이터베이스)의 이름입니다.
INDEX_NAME
index의 이름입니다.
index가 primary key이면
이름은 항상 PRIMARY입니다.
SEQ_IN_INDEX
index 내 column의 순서 번호로, 1부터 시작합니다.
COLUMN_NAME
column 이름입니다.
EXPRESSION column에 대한 설명도 참조하십시오.
COLLATION
column이 index 내에서 어떤 방식으로 정렬되는지를 나타냅니다.
값은 A(오름차순), D(내림차순),
또는 NULL(정렬되지 않음)을 가질 수 있습니다.
CARDINALITY
index 내의 고유 값 개수에 대한 추정치입니다.
이 숫자를 갱신하려면
ANALYZE TABLE을 실행하거나
(MyISAM table의 경우)
myisamchk -a를 실행하십시오.
CARDINALITY는 정수로 저장된 statistics를 기반으로 계산되므로,
작은 table에 대해서도 값이 반드시 정확한 것은 아닙니다.
cardinality가 높을수록, MySQL이 조인을 수행할 때
해당 index를 사용할 가능성이 커집니다.
SUB_PART
index prefix입니다.
즉, column이 부분적으로만 index되는 경우
index된 문자 수이며,
전체 column이 index되는 경우에는 NULL입니다.
참고
Prefix _limits_는 바이트 단위로 측정됩니다.
그러나 CREATE TABLE,
ALTER TABLE,
CREATE INDEX
statement의 index 정의에 사용되는 prefix _length_는
논바이너리 문자열 타입
(CHAR,
VARCHAR,
TEXT)의 경우 문자 수로,
바이너리 문자열 타입
(BINARY,
VARBINARY,
BLOB)의 경우 바이트 수로 해석됩니다.
멀티바이트 문자 집합을 사용하는 논바이너리 문자열 column에 대해
prefix length를 지정할 때 이 점을 고려해야 합니다.
index prefix에 대한 추가 정보는 Section 10.3.5, “Column Indexes” 및 Section 15.1.18, “CREATE INDEX Statement”를 참조하십시오.
PACKED
key가 어떻게 패킹되는지를 나타냅니다.
패킹되지 않으면 NULL입니다.
NULLABLE
column이 NULL 값을 가질 수 있으면 YES,
그렇지 않으면 ''를 포함합니다.
INDEX_TYPE
사용된 index 메서드입니다
(BTREE, FULLTEXT, HASH,
RTREE).
COMMENT
index가 비활성화된 경우 disabled와 같이,
고유한 column으로 표현되지 않은 index에 대한 정보를 나타냅니다.
INDEX_COMMENT
index가 생성될 때 COMMENT 속성으로
제공된 comment입니다.
IS_VISIBLE
index가 옵티마이저에 보이는지 여부입니다. Section 10.3.12, “Invisible Indexes”를 참조하십시오.
EXPRESSION
MySQL은 functional key part를 지원하며
(Functional Key Parts 참조),
이는 COLUMN_NAME 및
EXPRESSION column 모두에 영향을 줍니다:
nonfunctional key part의 경우,
COLUMN_NAME은 key part에 의해
index되는 column을 나타내고,
EXPRESSION은 NULL입니다.
functional key part의 경우,
COLUMN_NAME column은 NULL이고,
EXPRESSION은 key part에 대한 expression을 나타냅니다.
INFORMATION_SCHEMA table은 없습니다.
MySQL column 목록은
QUALIFIER와
OWNER가 각각
CATALOG와 SCHEMA로
대체된 것을 제외하면,
SQL Server 2000의 sp_statistics가 반환하는 것과 유사합니다.table index에 대한 정보는
SHOW INDEX statement에서도 확인할 수 있습니다.
Section 15.7.7.24, “SHOW INDEX Statement”를 참조하십시오.
다음 statement들은 동일합니다:
1SELECT * FROM INFORMATION_SCHEMA.STATISTICS 2 WHERE table_name = 'tbl_name' 3 AND table_schema = 'db_name' 4 5SHOW INDEX 6 FROM tbl_name 7 FROM db_name
generated invisible primary key column에 대한 정보는
기본적으로 이 table에서 볼 수 있습니다.
이러한 정보를 숨기려면
show_gipk_in_create_table_and_information_schema = OFF
로 설정할 수 있습니다.
자세한 내용은
Section 15.1.24.11, “Generated Invisible Primary Keys”를 참조하십시오.
28.3.39 The INFORMATION_SCHEMA SCHEMA_PRIVILEGES Table
28.3.41 The INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS Table