Loading...
MySQL 9.5 Reference Manual 9.5의 28.3.44 The INFORMATION_SCHEMA TABLES Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
TABLES 테이블은 데이터베이스 내 테이블들에 대한 정보를 제공합니다.
TABLES 내에서 테이블 통계를 나타내는 컬럼들은 캐시된 값을 보유합니다. information_schema_stats_expiry
시스템 변수는 캐시된 테이블 통계가 만료되기 전까지의 기간을 정의합니다. 기본값은 86400초(24시간)입니다. 캐시된 통계가 없거나 통계가 만료된 경우, 테이블 통계 컬럼을 조회할 때 스토리지 엔진으로부터 통계가 조회됩니다. 특정 테이블에 대해 언제든지 캐시된 값을 갱신하려면 ANALYZE TABLE을 사용합니다. 항상 스토리지 엔진으로부터 최신 통계를 직접 조회하려면 information_schema_stats_expiry
를 0으로 설정합니다. 자세한 내용은
Section 10.2.3, “Optimizing INFORMATION_SCHEMA Queries”를 참조하십시오.
참고
innodb_read_only 시스템
변수가 활성화되어 있으면, ANALYZE TABLE은 데이터 딕셔너리 내 통계 테이블들을 갱신할 수 없기 때문에 실패할 수 있으며, 이 테이블들은
InnoDB를 사용합니다. 키 분포를 갱신하는 ANALYZE TABLE 작업의 경우, (예를 들어 MyISAM 테이블인 경우처럼) 작업이 테이블 자체를 갱신하더라도 실패가 발생할 수 있습니다. 갱신된 분포 통계를 얻으려면
information_schema_stats_expiry=0
로 설정하십시오.
TABLES 테이블에는 다음과 같은 컬럼들이 있습니다:
TABLE_CATALOG테이블이 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다.
TABLE_SCHEMA테이블이 속한 스키마(데이터베이스)의 이름입니다.
TABLE_NAME테이블의 이름입니다.
TABLE_TYPE테이블의 경우 BASE TABLE,
뷰의 경우 VIEW, INFORMATION_SCHEMA
테이블의 경우 SYSTEM VIEW입니다.
TABLES 테이블에는
TEMPORARY 테이블이 나열되지 않습니다.
ENGINE테이블의 스토리지 엔진입니다. Chapter 17, The InnoDB Storage Engine 및 Chapter 18, Alternative Storage Engines를 참조하십시오.
파티션된 테이블의 경우, ENGINE에는 모든 파티션이 사용하는 스토리지 엔진의 이름이 표시됩니다.
VERSION이 컬럼은 사용되지 않습니다. MySQL 8.0에서
.frm 파일이 제거되면서, 이 컬럼은 이제 하드코딩된 값 10을 보고하며, 이는 MySQL 5.7에서 사용된 마지막
.frm 파일 버전입니다.
ROW_FORMAT로우 저장 포맷입니다(Fixed,
Dynamic, Compressed,
Redundant, Compact). MyISAM 테이블의 경우,
Dynamic은 myisamchk -dvv에서
Packed로 보고되는 것에 해당합니다.
TABLE_ROWS로우 수입니다. MyISAM과 같은 일부 스토리지 엔진은 정확한 개수를 저장합니다. InnoDB와 같은 다른 스토리지 엔진의 경우, 이 값은 근사치이며 실제 값과 40%에서 50%까지 차이가 날 수 있습니다. 이러한 경우 정확한 개수를 얻으려면 SELECT COUNT(*)를 사용하십시오.
INFORMATION_SCHEMA 테이블의 경우 TABLE_ROWS는
NULL입니다.
InnoDB 테이블의 로우 수는 SQL 최적화에 사용되는 대략적인 추정치일 뿐입니다. (이는 InnoDB 테이블이 파티션된 경우에도 마찬가지입니다.)
AVG_ROW_LENGTH평균 로우 길이입니다.
DATA_LENGTHMyISAM의 경우, DATA_LENGTH는 데이터 파일의 길이(바이트 단위)입니다.
InnoDB의 경우, DATA_LENGTH는 클러스터형 인덱스에 할당된 공간의 대략적인 양(바이트 단위)입니다. 구체적으로는 클러스터형 인덱스 크기(페이지 단위)에 InnoDB 페이지 크기를 곱한 값입니다.
다른 스토리지 엔진에 대한 정보는 이 섹션 끝부분의 노트를 참조하십시오.
MAX_DATA_LENGTHMyISAM의 경우,
MAX_DATA_LENGTH는 데이터 파일의 최대 길이입니다. 이는 사용되는 데이터 포인터 크기를 기준으로 테이블에 저장될 수 있는 데이터의 총 바이트 수입니다.
InnoDB에서는 사용되지 않습니다.
다른 스토리지 엔진에 대한 정보는 이 섹션 끝부분의 노트를 참조하십시오.
INDEX_LENGTHMyISAM의 경우, INDEX_LENGTH는 인덱스 파일의 길이(바이트 단위)입니다.
InnoDB의 경우, INDEX_LENGTH는 비클러스터형 인덱스에 할당된 공간의 대략적인 양(바이트 단위)입니다. 구체적으로는 비클러스터형 인덱스 크기(페이지 단위)의 합에 InnoDB 페이지 크기를 곱한 값입니다.
다른 스토리지 엔진에 대한 정보는 이 섹션 끝부분의 노트를 참조하십시오.
DATA_FREE할당되었지만 사용되지 않은 바이트 수입니다.
InnoDB 테이블은 테이블이 속한 테이블스페이스의 여유 공간을 보고합니다. 테이블이 공유 테이블스페이스에 위치한 경우, 이는 공유 테이블스페이스의 여유 공간입니다. 여러 테이블스페이스를 사용하고 테이블이 자체 테이블스페이스를 가지고 있는 경우, 여유 공간은 해당 테이블에 대해서만 계산됩니다. 여유 공간은 완전히 비어 있는 익스텐트 내의 바이트 수에서 안전 여유분을 뺀 값을 의미합니다. 여유 공간이 0으로 표시되더라도, 새로운 익스텐트를 할당할 필요가 없는 한 로우를 삽입할 수 있을 수도 있습니다.
NDB Cluster의 경우, DATA_FREE는 Disk Data 테이블 또는 조각에 대해 디스크에 할당되었으나 사용되지 않은 공간을 표시합니다. (메모리 내 데이터 리소스 사용량은 DATA_LENGTH 컬럼에 의해 보고됩니다.)
파티션된 테이블의 경우, 이 값은 단지 추정치이며 절대적으로 정확하지 않을 수 있습니다. 이러한 경우 이 정보를 보다 정확하게 얻는 방법은 다음 예에서처럼
INFORMATION_SCHEMA PARTITIONS 테이블을 조회하는 것입니다:
1SELECT SUM(DATA_FREE) 2 FROM INFORMATION_SCHEMA.PARTITIONS 3 WHERE TABLE_SCHEMA = 'mydb' 4 AND TABLE_NAME = 'mytable';
자세한 내용은 Section 28.3.26, “The INFORMATION_SCHEMA PARTITIONS Table”를 참조하십시오.
AUTO_INCREMENT다음 AUTO_INCREMENT 값입니다.
CREATE_TIME테이블이 생성된 시점입니다.
UPDATE_TIME테이블이 마지막으로 갱신된 시점입니다. 일부 스토리지 엔진의 경우 이 값은 NULL입니다. 각 InnoDB 테이블이 별도의
.ibd 파일에 있는 file-per-table 모드에서도,
change buffering
으로 인해 데이터 파일에 대한 쓰기가 지연될 수 있으므로, 파일 수정 시간은 마지막 insert, update 또는 delete 시점과 다를 수 있습니다. MyISAM의 경우 데이터 파일 타임스탬프가 사용되지만, Windows에서는 update 시 타임스탬프가 갱신되지 않으므로 값이 정확하지 않습니다.
파티션 되지 않은 InnoDB 테이블의 경우,
UPDATE_TIME은 마지막으로 수행된
UPDATE,
INSERT, 또는
DELETE에 대한 타임스탬프 값을 표시합니다. MVCC의 경우, 타임스탬프 값은 마지막 갱신 시점으로 간주되는
COMMIT 시간을 반영합니다. 서버를 재시작하거나 테이블이 InnoDB 데이터 딕셔너리 캐시에서 제거될 때 타임스탬프는 유지되지 않습니다.
CHECK_TIME테이블이 마지막으로 검사된 시점입니다. 이 시간을 갱신하지 않는 스토리지 엔진도 있으며, 이러한 경우 값은 항상
NULL입니다.
파티션된 InnoDB 테이블의 경우,
CHECK_TIME은 항상
NULL입니다.
TABLE_COLLATION테이블 기본 콜레이션입니다. 출력에는 테이블 기본 문자 집합이 명시적으로 나열되지 않지만, 콜레이션 이름은 문자 집합 이름으로 시작합니다.
CHECKSUM라이브 체크섬 값(있는 경우)입니다.
CREATE_OPTIONSCREATE TABLE과 함께 사용된 추가 옵션입니다.
CREATE_OPTIONS는 파티션된 테이블의 경우
partitioned를 표시합니다.
CREATE_OPTIONS는 file-per-table 테이블스페이스에서 생성된 테이블에 대해 지정된
ENCRYPTION 절을 표시합니다. 테이블이 암호화되어 있거나 지정된 암호화 설정이 스키마 암호화 설정과 다른 경우, file-per-table 테이블스페이스의 암호화 절을 표시합니다. 일반 테이블스페이스에서 생성된 테이블의 경우, 암호화 절은 표시되지 않습니다. 암호화된 file-per-table 및 일반 테이블스페이스를 식별하려면
INNODB_TABLESPACES의 ENCRYPTION 컬럼을 조회하십시오.
strict mode가 비활성화된 상태에서 테이블을 생성할 때, 지정한 로우 포맷이 지원되지 않으면 스토리지 엔진의 기본 로우 포맷이 사용됩니다. 테이블의 실제 로우 포맷은 ROW_FORMAT 컬럼에 보고됩니다.
CREATE_OPTIONS에는 CREATE TABLE 스테이트먼트에서 지정한 로우 포맷이 표시됩니다.
테이블의 스토리지 엔진을 변경할 때, 새 스토리지 엔진에 적용되지 않는 테이블 옵션은 필요시 기존에 정의된 옵션과 함께 테이블을 원래 스토리지 엔진으로 되돌릴 수 있도록 테이블 정의에 유지됩니다.
CREATE_OPTIONS 컬럼에는 이러한 보존된 옵션이 표시될 수 있습니다.
TABLE_COMMENT테이블을 생성할 때 사용된 코멘트(또는 MySQL이 테이블 정보를 액세스할 수 없었던 이유에 대한 정보)입니다.
NDB 테이블의 경우, 이 스테이트먼트의 출력은
AVG_ROW_LENGTH 및
DATA_LENGTH 컬럼에 대해 적절한 값을 표시하지만,
BLOB 컬럼은 고려되지 않습니다.
NDB 테이블의 경우,
DATA_LENGTH에는 메인 메모리에 저장된 데이터만 포함되며,
MAX_DATA_LENGTH 및
DATA_FREE 컬럼은 Disk Data에 적용됩니다.
NDB Cluster Disk Data 테이블의 경우,
MAX_DATA_LENGTH는 Disk Data 테이블 또는 조각의 디스크 부분에 대해 할당된 공간을 표시합니다. (메모리 내 데이터 리소스 사용량은
DATA_LENGTH 컬럼에 의해 보고됩니다.)
MEMORY 테이블의 경우,
DATA_LENGTH,
MAX_DATA_LENGTH,
INDEX_LENGTH 값은 실제로 할당된 메모리 양의 근사치입니다. 할당 알고리즘은 할당 작업 횟수를 줄이기 위해 큰 단위로 메모리를 예약합니다.
뷰의 경우, 대부분의 TABLES 컬럼은 0 또는
NULL이며, 예외적으로
TABLE_NAME은 뷰 이름을 나타내고,
CREATE_TIME은 생성 시간을 나타내며,
TABLE_COMMENT에는
VIEW가 표시됩니다.
테이블 정보는
SHOW TABLE STATUS 및
SHOW TABLES 스테이트먼트로도 확인할 수 있습니다.
Section 15.7.7.39, “SHOW TABLE STATUS Statement” 및
Section 15.7.7.40, “SHOW TABLES Statement”를 참조하십시오. 다음 스테이트먼트들은 서로 동일합니다:
1SELECT 2 TABLE_NAME, ENGINE, VERSION, ROW_FORMAT, TABLE_ROWS, AVG_ROW_LENGTH, 3 DATA_LENGTH, MAX_DATA_LENGTH, INDEX_LENGTH, DATA_FREE, AUTO_INCREMENT, 4 CREATE_TIME, UPDATE_TIME, CHECK_TIME, TABLE_COLLATION, CHECKSUM, 5 CREATE_OPTIONS, TABLE_COMMENT 6 FROM INFORMATION_SCHEMA.TABLES 7 WHERE table_schema = 'db_name' 8 [AND table_name LIKE 'wild'] 9 10SHOW TABLE STATUS 11 FROM db_name 12 [LIKE 'wild']
다음 스테이트먼트들도 서로 동일합니다:
1SELECT 2 TABLE_NAME, TABLE_TYPE 3 FROM INFORMATION_SCHEMA.TABLES 4 WHERE table_schema = 'db_name' 5 [AND table_name LIKE 'wild'] 6 7SHOW FULL TABLES 8 FROM db_name 9 [LIKE 'wild']
28.3.43 The INFORMATION_SCHEMA ST_UNITS_OF_MEASURE Table
28.3.45 The INFORMATION_SCHEMA TABLES_EXTENSIONS Table