Loading...
MySQL 9.5 Reference Manual 9.5의 28.3.15 The INFORMATION_SCHEMA FILES Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
FILES 테이블은 MySQL 테이블스페이스 데이터가 저장되는 파일에 대한 정보를 제공합니다.
FILES 테이블은 InnoDB 데이터 파일에 대한 정보를 제공합니다. NDB Cluster에서는 이 테이블이 NDB Cluster Disk Data 테이블이 저장되는 파일에 대한 정보도 제공합니다. InnoDB에 대한 추가 정보는 이 절의 뒷부분에 나오는 InnoDB Notes를 참조하십시오. NDB Cluster에 대한 추가 정보는 NDB Notes를 참조하십시오.
FILES 테이블에는 다음과 같은 컬럼이 있습니다:
FILE_ID
InnoDB의 경우: 테이블스페이스 ID이며, space_id 또는 fil_space_t::id라고도 합니다.
NDB의 경우: 파일 식별자입니다. FILE_ID 컬럼 값은 자동으로 생성됩니다.
FILE_NAME
InnoDB의 경우: 데이터 파일의 이름입니다. File-per-table 및 general 테이블스페이스는 .ibd 파일 이름 확장자를 가집니다. Undo 테이블스페이스는 undo 접두사를 가집니다. 시스템 테이블스페이스는 ibdata 접두사를 가집니다. 글로벌 임시 테이블스페이스는 ibtmp 접두사를 가집니다. 파일 이름에는 MySQL 데이터 디렉터리(datadir 시스템 변수의 값)를 기준으로 한 상대 경로일 수도 있는 파일 경로가 포함됩니다.
NDB의 경우: CREATE LOGFILE GROUP 또는 ALTER LOGFILE GROUP에 의해 생성된 undo 로그 파일의 이름이거나, CREATE TABLESPACE 또는 ALTER TABLESPACE에 의해 생성된 데이터 파일의 이름입니다. NDB 9.5에서는 파일 이름이 상대 경로로 표시됩니다. Undo 로그 파일의 경우 이 경로는 DataDir/ndb_NodeId_fs/LG 디렉터리를 기준으로 하고, 데이터 파일의 경우 DataDir/ndb_NodeId_fs/TS 디렉터리를 기준으로 합니다. 예를 들어, ALTER TABLESPACE ts ADD DATAFILE 'data_2.dat' INITIAL SIZE 256M으로 생성된 데이터 파일의 이름은 ./data_2.dat로 표시됩니다.
FILE_TYPE
InnoDB의 경우: 테이블스페이스 파일 유형입니다. InnoDB 파일의 파일 유형은 세 가지가 있습니다. TABLESPACE는 테이블, 인덱스 또는 기타 형태의 사용자 데이터를 보유하는 시스템, general, file-per-table 테이블스페이스 파일의 파일 유형입니다. TEMPORARY는 임시 테이블스페이스의 파일 유형입니다. UNDO LOG는 undo 레코드를 보유하는 undo 테이블스페이스의 파일 유형입니다.
NDB의 경우: 값은 UNDO LOG 또는 DATAFILE 중 하나입니다.
TABLESPACE_NAME
파일이 연관된 테이블스페이스의 이름입니다.
InnoDB의 경우: General 테이블스페이스 이름은 생성 시 지정된 대로입니다. File-per-table 테이블스페이스 이름은 schema_name/table_name 형식으로 표시됩니다. InnoDB 시스템 테이블스페이스 이름은 innodb_system입니다. 글로벌 임시 테이블스페이스 이름은 innodb_temporary입니다. 기본 undo 테이블스페이스 이름은 innodb_undo_001 및 innodb_undo_002입니다. 사용자가 생성한 undo 테이블스페이스 이름은 생성 시 지정된 대로입니다.
TABLE_CATALOG
이 값은 항상 비어 있습니다.
TABLE_SCHEMA
항상 NULL입니다.
TABLE_NAME
항상 NULL입니다.
LOGFILE_GROUP_NAME
InnoDB의 경우: 항상 NULL입니다.
NDB의 경우: 로그 파일 또는 데이터 파일이 속한 로그 파일 그룹의 이름입니다.
LOGFILE_GROUP_NUMBER
InnoDB의 경우: 항상 NULL입니다.
NDB의 경우: Disk Data undo 로그 파일에 대해, 로그 파일이 속한 로그 파일 그룹의 자동 생성된 ID 번호입니다. 이 값은 해당 undo 로그 파일에 대해 ndbinfo.dict_obj_info 테이블의 id 컬럼 및 ndbinfo.logspaces 테이블의 log_id 컬럼에 표시되는 값과 동일합니다.
ENGINE
InnoDB의 경우: 이 값은 항상 InnoDB입니다.
NDB의 경우: 이 값은 항상 ndbcluster입니다.
FULLTEXT_KEYS
항상 NULL입니다.
DELETED_ROWS
항상 NULL입니다.
UPDATE_COUNT
항상 NULL입니다.
FREE_EXTENTS
InnoDB의 경우: 현재 데이터 파일에서 완전히 비어 있는 익스텐트 수입니다.
NDB의 경우: 아직 파일에서 사용되지 않은 익스텐트의 수입니다.
TOTAL_EXTENTS
InnoDB의 경우: 현재 데이터 파일에서 사용 중인 전체 익스텐트 수입니다. 파일 끝에 있는 partial 익스텐트는 계산되지 않습니다.
NDB의 경우: 파일에 할당된 전체 익스텐트 수입니다.
EXTENT_SIZE
InnoDB의 경우: 4KB, 8KB 또는 16KB 페이지 크기 파일의 익스텐트 크기는 1048576(1MB)입니다. 32KB 페이지 크기 파일의 익스텐트 크기는 2097152 바이트(2MB)이고, 64KB 페이지 크기 파일의 익스텐트 크기는 4194304(4MB)입니다. FILES는 InnoDB 페이지 크기를 보고하지 않습니다. 페이지 크기는 innodb_page_size 시스템 변수로 정의됩니다. 익스텐트 크기 정보는 FILES.FILE_ID = INNODB_TABLESPACES.SPACE인 경우 INNODB_TABLESPACES 테이블에서도 조회할 수 있습니다.
NDB의 경우: 파일의 익스텐트 크기(바이트 단위)입니다.
INITIAL_SIZE
InnoDB의 경우: 파일의 초기 크기(바이트 단위)입니다.
NDB의 경우: 파일 크기(바이트 단위)입니다. 이는 파일을 생성할 때 사용된 CREATE LOGFILE GROUP, ALTER LOGFILE GROUP, CREATE TABLESPACE 또는 ALTER TABLESPACE 스테이트먼트의 INITIAL_SIZE 절에 사용된 값과 동일합니다.
MAXIMUM_SIZE
InnoDB의 경우: 파일에 허용되는 최대 바이트 수입니다. 이 값은 미리 정의된 시스템 테이블스페이스 데이터 파일을 제외한 모든 데이터 파일에 대해 NULL입니다. 최대 시스템 테이블스페이스 파일 크기는 innodb_data_file_path로 정의됩니다. 최대 글로벌 임시 테이블스페이스 파일 크기는 innodb_temp_data_file_path로 정의됩니다. 미리 정의된 시스템 테이블스페이스 데이터 파일에 대해 NULL 값은 파일 크기 제한이 명시적으로 정의되지 않았음을 나타냅니다.
NDB의 경우: 이 값은 항상 INITIAL_SIZE 값과 동일합니다.
AUTOEXTEND_SIZE
테이블스페이스의 자동 확장 크기입니다. NDB의 경우 AUTOEXTEND_SIZE는 항상 NULL입니다.
CREATION_TIME
항상 NULL입니다.
LAST_UPDATE_TIME
항상 NULL입니다.
LAST_ACCESS_TIME
항상 NULL입니다.
RECOVER_TIME
항상 NULL입니다.
TRANSACTION_COUNTER
항상 NULL입니다.
VERSION
InnoDB의 경우: 항상 NULL입니다.
NDB의 경우: 파일의 버전 번호입니다.
ROW_FORMAT
InnoDB의 경우: 항상 NULL입니다.
NDB의 경우: FIXED 또는 DYNAMIC 중 하나입니다.
TABLE_ROWS
항상 NULL입니다.
AVG_ROW_LENGTH
항상 NULL입니다.
DATA_LENGTH
항상 NULL입니다.
MAX_DATA_LENGTH
항상 NULL입니다.
INDEX_LENGTH
항상 NULL입니다.
DATA_FREE
InnoDB의 경우: 전체 테이블스페이스의 사용 가능한 전체 여유 공간(바이트 단위)입니다. 시스템 테이블스페이스와 임시 테이블 테이블스페이스를 포함하는 미리 정의된 시스템 테이블스페이스는 하나 이상의 데이터 파일을 가질 수 있습니다.
NDB의 경우: 항상 NULL입니다.
CREATE_TIME
항상 NULL입니다.
UPDATE_TIME
항상 NULL입니다.
CHECK_TIME
항상 NULL입니다.
CHECKSUM
항상 NULL입니다.
STATUS
InnoDB의 경우: 이 값은 기본적으로 NORMAL입니다. InnoDB file-per-table 테이블스페이스는 테이블스페이스가 아직 사용 가능하지 않음을 나타내는 IMPORTING을 보고할 수 있습니다.
NDB의 경우: NDB Cluster Disk Data 파일에 대해 이 값은 항상 NORMAL입니다.
EXTRA
InnoDB의 경우: 항상 NULL입니다.
NDB의 경우: Undo 로그 파일에 대해 이 컬럼은 undo 로그 버퍼 크기를 표시하고, 데이터 파일에 대해서는 항상 _NULL_입니다. 보다 자세한 설명은 다음 몇 개의 문단에서 제공합니다.
NDB는 각 데이터 노드에 클러스터 내 모든 데이터 파일과 모든 undo 로그 파일의 사본을 저장합니다. FILES 테이블은 각 파일마다 한 행씩 포함합니다.
예를 들어, 다음 두 스테이트먼트를 데이터 노드가 4개인 NDB Cluster에서 실행한다고 가정해 봅시다:
1CREATE LOGFILE GROUP mygroup 2 ADD UNDOFILE 'new_undo.dat' 3 INITIAL_SIZE 2G 4 ENGINE NDBCLUSTER; 5 6CREATE TABLESPACE myts 7 ADD DATAFILE 'data_1.dat' 8 USE LOGFILE GROUP mygroup 9 INITIAL_SIZE 256M 10 ENGINE NDBCLUSTER;
이 두 스테이트먼트를 성공적으로 실행한 후, FILES 테이블에 대해 다음과 같은 쿼리를 실행하면 아래와 비슷한 결과를 볼 수 있습니다:
1mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA 2 -> FROM INFORMATION_SCHEMA.FILES 3 -> WHERE ENGINE = 'ndbcluster'; 4 5+--------------------+-----------+--------------------------+ 6| LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA | 7+--------------------+-----------+--------------------------+ 8| mygroup | UNDO LOG | UNDO_BUFFER_SIZE=8388608 | 9| mygroup | DATAFILE | NULL | 10+--------------------+-----------+--------------------------+
다음 내용은 InnoDB 데이터 파일에 적용됩니다.
FILES에 의해 보고되는 정보는 열린 파일에 대한 InnoDB 인메모리 캐시에서 가져오지만, INNODB_DATAFILES는 InnoDB SYS_DATAFILES 내부 데이터 딕셔너리 테이블에서 데이터를 가져옵니다.
FILES가 제공하는 정보에는 InnoDB SYS_DATAFILES 내부 데이터 딕셔너리 테이블에 존재하지 않아 INNODB_DATAFILES에 포함되지 않는 글로벌 임시 테이블스페이스 정보가 포함됩니다.
Separate undo 테이블스페이스가 존재하는 경우(기본적으로 MySQL 9.5에서는 존재함), undo 테이블스페이스 정보가 FILES에 표시됩니다.
다음 쿼리는 InnoDB 테이블스페이스와 관련된 모든 FILES 테이블 정보를 반환합니다.
1SELECT 2 FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS, 3 TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE, 4 AUTOEXTEND_SIZE, DATA_FREE, STATUS 5FROM INFORMATION_SCHEMA.FILES 6WHERE ENGINE='InnoDB'\G
FILES 테이블은 Disk Data 파일 에 대한 정보만 제공합니다. 개별 NDB 테이블의 디스크 공간 할당 또는 사용 가능 용량을 파악하는 데 사용할 수는 없습니다. 하지만 디스크에 데이터가 저장된 각 NDB 테이블에 대해, 그 테이블에 대해 디스크에 저장된 데이터에 할당된 공간과 남아 있는 사용 가능 공간을 ndb_desc를 사용해 확인할 수 있습니다.
FILES 테이블에 포함된 정보의 상당 부분은 ndbinfo files 테이블에서도 찾을 수 있습니다.
CREATION_TIME, LAST_UPDATE_TIME, LAST_ACCESSED 값은 운영 체제에서 보고한 값이며, NDB 스토리지 엔진에서 제공하는 값이 아닙니다. 운영 체제에서 값을 제공하지 않는 경우 이 컬럼들은 NULL을 표시합니다.
TOTAL EXTENTS와 FREE_EXTENTS 컬럼의 차이는 현재 파일에서 사용 중인 익스텐트 수입니다:
1SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used 2 FROM INFORMATION_SCHEMA.FILES 3 WHERE FILE_NAME = './myfile.dat';
파일에서 사용 중인 디스크 공간의 대략적인 양을 알아보려면, 그 차이에 EXTENT_SIZE 컬럼 값을 곱합니다. EXTENT_SIZE는 파일의 익스텐트 크기(바이트 단위)입니다:
1SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used 2 FROM INFORMATION_SCHEMA.FILES 3 WHERE FILE_NAME = './myfile.dat';
마찬가지로, 특정 파일에서 사용 가능한 남은 공간의 양을 추정하려면 FREE_EXTENTS에 EXTENT_SIZE를 곱합니다:
1SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free 2 FROM INFORMATION_SCHEMA.FILES 3 WHERE FILE_NAME = './myfile.dat';
주의
위의 쿼리들에 의해 생성된 바이트 값은 어디까지나 근사값이며, 그 정밀도는 EXTENT_SIZE 값에 반비례합니다. 즉, EXTENT_SIZE가 클수록 근사값의 정확도는 떨어집니다.
또한 한 번 사용된 익스텐트는 그 일부인 데이터 파일을 drop하지 않고는 다시 해제될 수 없다는 점도 중요합니다. 이는 Disk Data 테이블에서 delete를 수행해도 디스크 공간이 해제되지 않는다 는 것을 의미합니다.
익스텐트 크기는 CREATE TABLESPACE 스테이트먼트에서 설정할 수 있습니다. 자세한 내용은 Section 15.1.25, “CREATE TABLESPACE Statement”를 참조하십시오.
Disk Data 테이블스페이스에 대한 정보는 ndb_desc 유틸리티를 사용해 얻을 수 있습니다. 자세한 내용은 Section 25.6.11.1, “NDB Cluster Disk Data Objects”와 ndb_desc 설명을 참조하십시오.
NDB Cluster Disk Data 오브젝트를 생성, drop 및 정보 조회하는 예제와 추가 정보는 Section 25.6.11, “NDB Cluster Disk Data Tables”를 참조하십시오.
28.3.14 The INFORMATION_SCHEMA EVENTS Table
28.3.16 The INFORMATION_SCHEMA KEY_COLUMN_USAGE Table