[MySQL] Information Schema - System : 1번째
- Databases/MySQL
- 2020. 12. 20.
■ COLUMNS Table
특정테이블에 포함된 컬럼 속성 정보 표시합니다.
각 컬럼의 정보는 다음과 같습니다.
• TABLE_CATALOG
열을 포함하는 테이블이 속한 카탈로그의 이름입니다. 항상 def값입니다.
• TABLE_SCHEMA
테이블이 속한 스키마(데이터베이스) 이름입니다.
• TABLE_NAME
해당 컬럼이 있는 테이블 이름입니다.
• COLUMN_NAME
컬럼이름입니다.
• ORDINAL_POSITION
테이블 내 컬럼의 위치(순서)입니다. SHOW COLUMNS 명령어와 달리 COLUMNS 테이블의 SELECT에는 자동으로 정렬되어 출력되지 않습니다.
• COLUMN_DEFAULT
컬럼 기본값을 지정합니다. insert명령어로 null값이 들어올 시 어떤값으로 대체할지 결정합니다. 기본값이 null(테이블 생성이 아무것도 지정이 안되면)이면 null로 저장됩니다.
• IS_NULLABLE
컬럼의 null 허용 여부입니다. NULL 값이 컬럼에 저장 될 수 있으면 값은 YES이고 그렇지 않으면 NO입니다.
• DATA_TYPE
컬럼의 데이터 타입입니다. varchar, char, int등의 컬럼 데이터 타입이 있습니다. 또한 정밀도 또는 길이와 같은 기타 정보가 포함됩니다.
예) varchar, bigint, bigint등. 뒤에 크기나 유형이 나오지 않음.
• CHARACTER_MAXIMUM_LENGTH
스트링 컬럼에서 최대로 가질수 있는 길이입니다.
• CHARACTER_OCTET_LENGTH
스트링 컬럼에서 최대 길이(바이트)입니다.
• NUMERIC_PRECISION
숫자 컬럼에서 숫자에 대한 정밀도입니다. !!!!!! 숫자 정밀도? 어떤 의미인지조회해볼것
• NUMERIC_SCALE
숫자 컬럼에서 숫자 크기입니다.
double일때는 2가 표시. int, bigint일때는 0으로 표시됨.
• DATETIME_PRECISION
시간 컬럼의 소수 초 정밀도입니다.
datetime, timestamp에서 0으로 표시됩니다.
• CHARACTER_SET_NAME
문자열 컬럼에서 캐릭터셋 이름
• COLLATION_NAME
문자열 컬럼에서 데이터 정렬 이름.
• COLUMN_TYPE
컬럼 데이터 타입. DATA_TYPE 값은 다른 정보가 없는 유형 이름입니다. COLUMN_TYPE 값에는 유형 이름과 정밀도 또는 길이와 같은 기타 정보가 포함됩니다.
예) varchar(30), bigint(3), bigint(20) unsigned등.
컬럼에 대한 크기와 상세사항에 대해 출력.
• COLUMN_KEY
컬럼의 키 이름, 즉 인덱의 종류가 표시됨. PRI(Primary Key), UNI(Unique Index), MUL(복합 인덱스)가 표시됨.
PRI : 단일 Primary Key이거나 특정 Primary Key에 포함된 컬럼들중 하나.
UNI : unique index의 첫번째 열입니다. unique index는 여러 열을 포함할 수 있기 때문입니다.
MUL : 다중 컬럼 인덱스. 특정 인덱스의 첫 번째 열입니다. 고유하지 않은, 즉 일반 인덱스의 첫 번째 열입니다. !!!!!! 복합 인덱스일때 진짜 선행컬럼외 다른 컬럼은 안나오는지 확인.
• EXTRA
주어진 컬럼에 대한 추가 정보입니다. 다음과 같은 경우 값은 비어 있지 않습니다.
- AUTO_INCREMENT 속성이 있는 컬럼의 경우 auto_increment입니다.
- ON UPDATE CURRENT_TIMESTAMP 속성이 있는 TIMESTAMP 또는 DATETIME 컬럼에 대한 CURRENT_TIMESTAMP 업데이트시 표시됩니다.
- generated column에 대해 STORED GENERATED 또는 VIRTUAL GENERATED인지 표시합니다.
• PRIVILEGES
컬럼에 대해 어떤 권한들이 있는지 표시합니다.
• COLUMN_COMMENT
컬럼의 코멘트를 표시합니다.
• GENERATION_EXPRESSION
generated column의 경우 컬럼값을 계산하는데 사용되는 계산식을 표시한다. nongenerated column의 경우 비어 있습니다.
• 참고
show column명령어로 컬럼 정보를확인할 수 있습니다.
SHOW [FULL] COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']
■ COLUMN_PRIVILEGES Table
컬럼에 대한 권한을 표시합니다. mysql.columns_priv 시스템 테이블의 값에서 가져옵니다.
각 컬럼의 정보는 다음과 같습니다.
• GRANTEE
해당컬럼에 사용이 허가된 계정이름이 표시됩니다. 'user_name'@'host_name' 형식으로 나타납니다.
• TABLE_CATALOG
컬럼을 포함하는 테이블이 속한 카탈로그의 이름입니다. 항상 값은 def입니다.
• TABLE_SCHEMA
특정 테이블에 포함된 컬럼이 속한 데이터베이스(스키마) 이름입니다.
• TABLE_NAME
컬럼이 속한 테이블 이름입니다.
• COLUMN_NAME
컬럼 이름입니다.
• PRIVILEGE_TYPE
컬럼에 부여된 권한입니다. 컬럼 수준에서 부여될 수 있는 권한을 표시합니다. 각 행은 단일 권한을 나열하므로 피부 여자가 보유한 열 권한 당 하나의 행이 있습니다.
SHOW FULL COLUMNS의 출력에서 권한은 모두 하나의 컬럼에 소문자로 표시됩니다 (예 : select, insert, update, references). COLUMN_PRIVILEGES에는 대문자로 된 행당 하나의 권한이 있습니다.
• IS_GRANTABLE
사용자에게 GRANT OPTION 권한이 있으면 YES, 그렇지 않으면 NO 입니다. 출력에는 GRANT OPTION이 PRIVILEGE_TYPE = 'GRANT OPTION'인 별도의 행으로 나열되지 않습니다.
• SQL 및 명령어 조회
다음과 같이 사용할 수도 있습니다.
+ 직접 조회
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
+ 명령어 조회
SHOW GRANTS ...
■ EVENTS Table
이벤트 스케쥴러에 의해 실행되는 이벤트 정보에 대한 내용을 나타냅니다.
각 컬럼의 정보는 다음과 같습니다.
• EVENT_CATALOG
이벤트를 소유하고 있는 카탈로그입니다. 항상 def입니다.
• EVENT_SCHEMA
이벤트를 소유하고 있는 스키마(database)입니다.
• EVENT_NAME
이벤트 이름입니다.
• DEFINER
이벤트를 만든 계정입니다. 'user_name'@'host_name' 형식으로 표시됩니다.
• TIME_ZONE
이벤트 실행시간을 나타내는 시간대이며 이벤트가 실행될때 이벤트 내에 적용됩니다. 기본값은 SYSTEM입니다.
• EVENT_BODY
이벤트 소스의 DO 안에 있는 문장을 표시합니다. 값은 항상 SQL문 입니다.
• EVENT_DEFINITION
이벤트 소스의 DO 안에 있는 문장을 표시합니다. 즉,이 이벤트에 의해 실행되는 명령문입니다.
• EVENT_TYPE
이벤트 반복 유형을 나타냅니다. ONE TIME(한번) 또는 RECURRING(반복) 으로 표시됩니다.
• EXECUTE_AT
일회성 이벤트의 경우에는 이벤트를 생성하는 데 사용된 CREATE EVENT 문의 AT 절 또는 이벤트를 수정 한 마지막 ALTER EVENT 문의 DATETIME 값입니다. 이 컬럼에 표시된 값은 이벤트의 AT 절에 포함 된 INTERVAL 값의 더하기 또는 빼기를 반영합니다. 예를 들어 ON SCHEDULE AT CURRENT_TIMESTAMP + '1 : 6'DAY_HOUR를 사용하여 이벤트가 생성되고 이벤트가 2018-02-09 14:05:30에 생성된 경우 이 컬럼에 표시되는 값은 '2018-02 -10 20:05:30 ' 입니다. 이벤트의 타이밍이 AT절 대신 EVERY절에 의해 결정되는 경우 (즉, 이벤트가 반복되는 경우)이 컬럼의 값은 NULL입니다.
• INTERVAL_VALUE
반복 이벤트인 경우 이벤트 실행 주기를 나타냅니다. 한번만 실행되는 이벤트인 경우 NULL로 표시됩니다.
• INTERVAL_FIELD
반복 이벤트가 재수행 되기전에 대기하는 간격에 사용되는 시간 단위입니다. 한번만 실행되는 이벤트의 경우 값은 항상 NULL입니다. - !!!!!!!!위에것과 비교해서 확인해볼것.!!!!!!!!
• SQL_MODE
이벤트가 작성 또는 변경될 때, 이벤트가 실행될때 적용되는 SQL 모드입니다.
• STARTS
반복 이벤트의 시작날짜 및 시간입니다. 이는 DATETIME 값으로 표시되며 이벤트에 대해 시작날짜 및 시간이 정의되지 않은 경우 NULL입니다. 임시 이벤트의 경우 이 컬럼은 항상 NULL입니다. 이벤트 작성시 STARTS 절이 포함된 반복 이벤트의 경우 이 컬럼에는 해당 DATETIME 값이 포함됩니다. EXECUTE_AT 컬럼과 마찬가지로이 값은 사용된 모든 문법을 확인합니다. 이벤트 타이밍에 영향을 미치는 STARTS절이 없는 경우 이 컬럼은 NULL입니다.
• ENDS
이벤트 소스에 ENDS 절이 포함된 반복 이벤트의 경우 이 컬럼에는 해당 DATETIME 값이 포함됩니다. EXECUTE_AT 컬럼과 마찬가지로 이 값은 이벤트 소스에서 사용된 모든 내용을 확인합니다. 이벤트 타이밍에 영향을주는 ENDS 절이 없는 경우 이 컬럼은 NULL입니다.
• STATUS
이벤트 상태입니다. ENABLED, DISABLED 또는 SLAVESIDE_DISABLED 중하나입니다.
SLAVESIDE_DISABLED는 복제 환경에서 소스 MySQL서버에서 이벤트가 만들어지고 이 이벤트가 타겟 서버로 복제가 되었지만 현제 타겟에서는 이벤트가 실행되고 있지 않음을 나타냅니다.
• ON_COMPLETION
PRESERVE 혹은 NOT PRESERVE 2둘중에 하나만 표시가 됩니다.
• CREATED
생성일자(시간포함)가 표시됩니다. 타임스탬프 값으로 표시됩니다.
• LAST_ALTERED
이벤트가 마지막으로 수정된 날짜 및 시간입니다. 이것은 TIMESTAMP 값입니다. 이벤트가 생성된 이후 수정되지 않은 경우 이 값은 CREATED 값과 동일합니다.
• LAST_EXECUTED
이벤트가 마지막으로 실행된 날짜 및 시간입니다. 이것은 DATETIME 값입니다. 이벤트가 실행되지 않은 경우이 컬럼은 NULL입니다.
LAST_EXECUTED는 이벤트가 시작된시기를 나타냅니다. 결과적으로 ENDS 열은 LAST_EXECUTED보다 작지 않습니다.
• EVENT_COMMENT
코멘트를 표기합니다. 코멘트가 없으면 비어 있습니다.
• ORIGINATOR
이벤트가 생성된 MySQL 서버의 서버 ID입니다. 복제에 사용됩니다. 이 값은 복제 소스에서 실행되는 경우 ALTER EVENT에 의해 해당 명령문이 발생한 서버의 서버 ID로 업데이트될 수 있습니다. 기본값은 0입니다.
• CHARACTER_SET_CLIENT
이벤트가 생성되었을 때 character_set_client 시스템 변수의 세션 값입니다.
• COLLATION_CONNECTION
이벤트가 작성될 때 collation_connection 시스템 변수의 세션 값입니다.
• DATABASE_COLLATION
이벤트가 연결된 데이터베이스의 데이터 정렬입니다.
• SQL 및 명령어 조회
+ 명령문으로 확인하는 방법
SHOW EVENTS
[FROM db_name]
[LIKE 'wild']
■ Files Table
FILES 테이블은 MySQL 테이블 스페이스 데이터가 저장되는 파일에 대한 정보를 제공합니다.
FILES 테이블은 InnoDB 데이터 파일에 대한 정보를 제공합니다. NDB 클러스터에서이 테이블은 NDB 클러스터 디스크 데이터 테이블이 저장되는 파일에 대한 정보도 제공합니다.
InnoDB에 대한 추가 정보는이 섹션 뒷부분의 InnoDB Notes를 참조하세요. NDB 클러스터에 대한 추가 정보는 NDB 참고 사항을 참조하세요.
각 컬럼의 정보는 다음과 같습니다.
• FILE_ID
InnoDB의 경우 : 테이블 스페이스 ID. space_id 또는 fil_space_t :: id라고도합니다.
NDB의 경우 : 파일 식별자. FILE_ID 컬럼 값이 자동 생성됩니다.
• FILE_NAME
InnoDB의 경우 : 데이터 파일의 이름입니다. 테이블 당 파일 및 일반 테이블 스페이스에는 .ibd 파일 이름 확장명이 있습니다. 실행 취소 테이블 스페이스 앞에는 실행 취소가 붙습니다. 시스템 테이블 스페이스는 ibdata로 시작됩니다.
임시 테이블 스페이스는 ibtmp로 시작됩니다. 파일 이름에는 MySQL 데이터 디렉토리 (datadir 시스템 변수의 값)에 상대적 일 수있는 파일 경로가 포함됩니다.
NDB의 경우 : CREATE LOGFILE GROUP 또는 ALTER LOGFILE GROUP에 의해 생성 된 UNDO 로그 파일 또는 CREATE TABLESPACE 또는 ALTER TABLESPACE에 의해 생성 된 데이터 파일의 이름입니다.
• FILE_TYPE
InnoDB의 경우 : 테이블 스페이스 파일 유형. InnoDB 파일에는 세 가지 가능한 파일 유형이 있습니다.
TABLESPACE는 테이블, 인덱스 또는 기타 형식의 사용자 데이터를 보유하는 모든 시스템, 일반 또는 테이블 당 파일 테이블 스페이스 파일의 파일 유형입니다. TEMPORARY는 임시 테이블 스페이스의 파일 유형입니다.
UNDO LOG는 실행 취소 레코드를 보유하는 실행 취소 테이블 스페이스의 파일 유형입니다.
NDB의 경우 : UNDO LOG, DATAFILE 또는 TABLESPACE 값 중 하나입니다.
• TABLESPACE_NAME
InnoDB의 경우 : 테이블 스페이스의 SQL 이름입니다. 일반 테이블 스페이스 이름은 SYS_TABLESPACES.NAME 값입니다.
다른 테이블 스페이스 파일의 경우 이름은 innodb_system, innodb_undo 및 innodb_file_per_table과 같이 innodb_로 시작합니다.
테이블 당 파일 테이블 스페이스 이름 형식은 innodb_file_per_table _ ##이며, 여기서 ##은 테이블 스페이스 ID입니다.
NDB의 경우 : 파일이 연결된 테이블 스페이스의 이름입니다.
• TABLE_CATALOG
이 값은 항상 비어 있습니다.
• TABLE_SCHEMA
이 값은 항상 비어있습니다.
• TABLE_NAME
이값은 항상 비어있습니다.
• LOGFILE_GROUP_NAME
InnoDB의 경우 : 항상 NULL입니다.
NDB의 경우 : 로그 파일 또는 데이터 파일이 속한 로그 파일 그룹의 이름입니다.
• LOGFILE_GROUP_NUMBER
InnoDB의 경우 : 이 값은 항상 NULL입니다.
NDB의 경우 : 디스크 데이터 실행 취소 로그 파일의 경우 로그 파일이 속한 로그 파일 그룹의 자동 생성 ID 번호입니다. 이는이 실행 취소 로그 파일에 대한 ndbinfo.dict_obj_info 테이블의 id 컬럼과 ndbinfo.logspaces 및 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의 경우 : 현재 데이터 파일에 사용 된 전체 범위의 수입니다. 파일 끝에있는 부분 범위는 계산되지 않습니다.
NDB의 경우 : 파일에 할당 된 총 익스텐트 수입니다.
• EXTENT_SIZE
InnoDB의 경우 : 페이지 크기가 4KB, 8KB 또는 16KB 인 파일의 경우 Extent 크기는 1048576 (1MB)입니다. 익스텐트 크기는 페이지 크기가 32KB 인 파일의 경우 2097152 바이트 (2MB)이고 페이지 크기가 64KB 인 파일의 경우 4194304 (4MB)입니다. FILES는 InnoDB 페이지 크기를보고하지 않습니다. 페이지 크기는 innodb_page_size 시스템 변수로 정의됩니다. 익스텐트 크기 정보는 FILES.FILE_ID = INNODB_SYS_TABLESPACES.SPACE 인 INNODB_SYS_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
InnoDB의 경우 : AUTOEXTEND_SIZE는 시스템 테이블 스페이스의 경우 innodb_data_file_path, 임시 테이블 스페이스의 경우 innodb_temp_data_file_path에 의해 정의 된 자동 확장 크기입니다.
NDB의 경우 : 항상 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 테이블 당 파일 테이블 스페이스는 IMPORTING을보고 할 수 있으며 이는 테이블 스페이스를 아직 사용할 수 없음을 나타냅니다.
NDB의 경우 : 항상 NORMAL입니다.
• EXTRA
InnoDB의 경우 : 항상 NULL입니다.
NDB의 경우 :이 컬럼은 데이터 파일 또는 실행 취소 로그 파일이 속한 데이터 노드를 표시합니다 (각 데이터 노드는 각 파일의 자체 복사본을 가짐). 실행 취소 로그 파일의 경우 실행 취소 로그 버퍼의 크기도 표시됩니다.
네 개의 데이터 노드가있는 NDB 클러스터에서이 문을 사용한다고 가정합니다.
mysql> CREATE LOGFILE GROUP mygroup
ADD UNDOFILE 'new_undo.dat'
INITIAL_SIZE 2G
ENGINE NDB;
CREATE LOGFILE GROUP 문을 성공적으로 실행 한 후 FILES 테이블에 대한이 쿼리에 대해 여기에 표시된 것과 유사한 결과가 표시되어야 합니다.
mysql> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME = 'new_undo.dat';
+--------------------+-----------+-----------------------------------------+
| LOGFILE_GROUP_NAME | FILE_TYPE | EXTRA |
+--------------------+-----------+-----------------------------------------+
| mygroup | UNDO LOG | CLUSTER_NODE=5;UNDO_BUFFER_SIZE=8388608 |
| mygroup | UNDO LOG | CLUSTER_NODE=6;UNDO_BUFFER_SIZE=8388608 |
| mygroup | UNDO LOG | CLUSTER_NODE=7;UNDO_BUFFER_SIZE=8388608 |
| mygroup | UNDO LOG | CLUSTER_NODE=8;UNDO_BUFFER_SIZE=8388608 |
+--------------------+-----------+-----------------------------------------+
▶︎ 참고사항
+ FILES는 비표준 INFORMATION_SCHEMA 테이블입니다.
▶︎ InnoDB Notes
다음 참고 사항은 InnoDB 데이터 파일에 적용됩니다.
+ FILES에 의해보고 된 데이터는 열린 파일에 대해 InnoDB 인 메모리 캐시에서보고됩니다. 이에 비해 INNODB_SYS_DATAFILES는 InnoDB SYS_DATAFILES 내부 데이터 사전 테이블의 데이터를보고합니다.
+ FILES가보고하는 데이터에는 임시 테이블 스페이스 데이터가 포함됩니다. 이 데이터는 InnoDB SYS_DATAFILES 내부 데이터 사전 테이블에서 사용할 수 없으므로 INNODB_SYS_DATAFILES에 의해보고되지 않습니다.
+ Undo 테이블 스페이스 데이터는 FILES에 의해보고됩니다.
+ 다음 쿼리는 InnoDB 테이블 스페이스와 관련된 모든 데이터를 반환합니다.
SELECT
FILE_ID, FILE_NAME, FILE_TYPE, TABLESPACE_NAME, FREE_EXTENTS,
TOTAL_EXTENTS, EXTENT_SIZE, INITIAL_SIZE, MAXIMUM_SIZE,
AUTOEXTEND_SIZE, DATA_FREE, STATUS
FROM INFORMATION_SCHEMA.FILES WHERE ENGINE='InnoDB'\G
▶︎ NDB Notes
+ FILES 테이블은 디스크 데이터 파일에 대한 정보 만 제공합니다. 개별 NDB 테이블에 대한 디스크 공간 할당 또는 가용성을 결정하는 데 사용할 수 없습니다.
그러나 ndb_desc를 사용하여 디스크에 데이터가 저장된 각 NDB 테이블에 할당 된 공간의 양과 해당 테이블의 데이터를 디스크에 저장하는 데 사용할 수있는 공간의 양을 확인할 수 있습니다.
+ CREATION_TIME, LAST_UPDATE_TIME 및 LAST_ACCESSED 값은 운영 체제에서보고 한 값이며 NDB 스토리지 엔진에서 제공하지 않습니다. 운영 체제에서 값을 제공하지 않는 경우 이러한 컬럼은 NULL을 표시합니다.
+ TOTAL EXTENTS 및 FREE_EXTENTS 컬럼의 차이점은 파일에서 현재 사용중인 확장 영역의 수입니다.
SELECT TOTAL_EXTENTS - FREE_EXTENTS AS extents_used
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME = 'myfile.dat';
파일에서 사용중인 디스크 공간의 크기를 대략적으로 계산하려면이 차이에 파일의 범위 크기를 바이트 단위로 제공하는 EXTENT_SIZE 컬럼 값으로 곱합니다.
SELECT (TOTAL_EXTENTS - FREE_EXTENTS) * EXTENT_SIZE AS bytes_used
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME = 'myfile.dat';
마찬가지로 FREE_EXTENTS에 EXTENT_SIZE를 곱하여 주어진 파일에서 사용 가능한 공간의 양을 추정 할 수 있습니다.
SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free
FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME = 'myfile.dat';
▶︎ 중요 사항
이전 쿼리에서 생성 된 바이트 값은 근사치 일 뿐이며 정밀도는 EXTENT_SIZE 값에 반비례합니다. 즉, EXTENT_SIZE가 클수록 근사치의 정확도가 떨어집니다.
일단 익스텐트가 사용되면 해당 익스텐트가 일부인 데이터 파일을 삭제하지 않고는 다시 해제 할 수 없다는 점을 기억하는 것도 중요합니다. 즉, 디스크 데이터 테이블에서 삭제해도 디스크 공간이 해제되지 않습니다.
익스텐트 크기는 CREATE TABLESPACE 문에서 설정할 수 있습니다.
+ 로그 파일 그룹 생성 후 FILES 테이블에 추가 행이 있습니다. 이 행은 FILE_NAME 컬럼의 값에 대해 NULL을 가지며 FILE_ID컬럼의 값에 대해 0을 갖습니다. FILE_TYPE 컬럼의 값은 항상 UNDO LOG이고 STATUS 컬럼의 값은 항상 NORMAL입니다. 이 행의 ENGINE 컬럼 값은 항상 ndbcluster입니다.
이 행의 FREE_EXTENTS 컬럼은 이름과 번호가 각각 LOGFILE_GROUP_NAME 및 LOGFILE_GROUP_NUMBER 컬럼에 표시된 지정된 로그 파일 그룹에 속하는 모든 실행 취소 파일에 사용할 수있는 총 여유 확장 영역 수를 보여줍니다.
NDB 클러스터에 기존 로그 파일 그룹이없고 다음 문을 사용하여 하나를 생성한다고 가정합니다.
mysql> CREATE LOGFILE GROUP lg1
ADD UNDOFILE 'undofile.dat'
INITIAL_SIZE = 16M
UNDO_BUFFER_SIZE = 1M
ENGINE = NDB;
이제 FILES 테이블을 쿼리 할 때이 NULL 행을 볼 수 있습니다.
mysql> SELECT DISTINCT
FILE_NAME AS File,
FREE_EXTENTS AS Free,
TOTAL_EXTENTS AS Total,
EXTENT_SIZE AS Size,
INITIAL_SIZE AS Initial
FROM INFORMATION_SCHEMA.FILES;
+--------------+---------+---------+------+----------+
| File | Free | Total | Size | Initial |
+--------------+---------+---------+------+----------+
| undofile.dat | NULL | 4194304 | 4 | 16777216 |
| NULL | 4184068 | NULL | 4 | NULL |
+--------------+---------+---------+------+----------+
실행 취소 로깅에 사용할 수있는 총 여유 익스텐트 수는 실행 취소 파일을 유지하는 데 필요한 오버 헤드로 인해 로그 파일 그룹의 모든 실행 취소 파일에 대한 TOTAL_EXTENTS 컬럼 값의 합계보다 항상 다소 적습니다. 로그 파일 그룹에 두 번째 실행 취소 파일을 추가 한 다음 FILES 테이블에 대해 이전 쿼리를 반복하면 확인할 수 있습니다.
mysql> ALTER LOGFILE GROUP lg1
ADD UNDOFILE 'undofile02.dat'
INITIAL_SIZE = 4M
ENGINE = NDB;
mysql> SELECT DISTINCT
FILE_NAME AS File,
FREE_EXTENTS AS Free,
TOTAL_EXTENTS AS Total,
EXTENT_SIZE AS Size,
INITIAL_SIZE AS Initial
FROM INFORMATION_SCHEMA.FILES;
+----------------+---------+---------+------+----------+
| File | Free | Total | Size | Initial |
+----------------+---------+---------+------+----------+
| undofile.dat | NULL | 4194304 | 4 | 16777216 |
| undofile02.dat | NULL | 1048576 | 4 | 4194304 |
| NULL | 5223944 | NULL | 4 | NULL |
+----------------+---------+---------+------+----------+
이 로그 파일 그룹을 사용하는 디스크 데이터 테이블의 실행 취소 로깅에 사용할 수있는 여유 공간 (바이트)은 여유 익스텐트 수에 초기 크기를 곱하여 근사화 할 수 있습니다.
mysql> SELECT
FREE_EXTENTS AS 'Free Extents',
FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
FROM INFORMATION_SCHEMA.FILES
WHERE LOGFILE_GROUP_NAME = 'lg1'
AND FILE_NAME IS NULL;
+--------------+------------+
| Free Extents | Free Bytes |
+--------------+------------+
| 5223944 | 20895776 |
+--------------+------------+
NDB 클러스터 디스크 데이터 테이블을 만든 다음 여기에 일부 행을 삽입하면 나중에 실행 취소 로깅을 위해 남아있는 대략적인 공간을 볼 수 있습니다. 예를 들면 다음과 같습니다.
mysql> CREATE TABLESPACE ts1
ADD DATAFILE 'data1.dat'
USE LOGFILE GROUP lg1
INITIAL_SIZE 512M
ENGINE = NDB;
mysql> CREATE TABLE dd (
c1 INT NOT NULL PRIMARY KEY,
c2 INT,
c3 DATE
)
TABLESPACE ts1 STORAGE DISK
ENGINE = NDB;
mysql> INSERT INTO dd VALUES
(NULL, 1234567890, '2007-02-02'),
(NULL, 1126789005, '2007-02-03'),
(NULL, 1357924680, '2007-02-04'),
(NULL, 1642097531, '2007-02-05');
mysql> SELECT
FREE_EXTENTS AS 'Free Extents',
FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
FROM INFORMATION_SCHEMA.FILES
WHERE LOGFILE_GROUP_NAME = 'lg1'
AND FILE_NAME IS NULL;
+--------------+------------+
| Free Extents | Free Bytes |
+--------------+------------+
| 5207565 | 20830260 |
+--------------+------------+
+ 데이터 파일이 테이블 스페이스와 연결되어 있는지 여부에 관계없이 NDB 클러스터 테이블 스페이스에 대한 FILES 테이블에 추가 행이 있습니다. 이 행은 FILE_NAME 컬럼의 값에 대해 NULL을 가지며 FILE_ID 컬럼의 값은 항상 0입니다. FILE_TYPE 컬럼에 표시된 값은 항상 TABLESPACE이고 STATUS 컬럼의 값은 항상 NORMAL입니다. 이 행의 ENGINE 컬럼 값은 항상 ndbcluster입니다.
+ MySQL 5.7.31부터이 테이블을 쿼리하려면 PROCESS 권한이 있어야합니다.
■ KEY_COLUMN_USAGE Table
테이블은 키 컬럼이 가진 제약사항을 나타냅니다.
각 컬럼의 정보는 다음과 같습니다.
• CONSTRAINT_CATALOG
제약조건이 가지는 카탈로그의 이름입니다. 항상 def값을 가집니다.
• CONSTRAINT_SCHEMA
제약조건이 가지고 있는 스키마(데이터베이스) 이름입니다.
• CONSTRAINT_NAME
제약조건의 이름입니다.
• TABLE_CATALOG
The name of the catalog to which the table belongs. This value is always def.
테이블이 가지는 카탈로그의 이름입니다.값은 항상 def입니다.
• TABLE_SCHEMA
테이블이 소유하는 스키마(데이터베이스) 이름입니다.
• TABLE_NAME
제약조건의 테이블 이름입니다.
• COLUMN_NAME
제약조건의 컬럼 이름입니다.
제약 조건이 외래 키이면 외래 키가 참조하는 컬럼이 아니라 외래 키의 컬럼입니다.
• ORDINAL_POSITION
테이블 내의 컬럼 위치가 아니라 제약 조건 내의 컬럶 위치입니다. 컬럼 위치는 1부터 번호가 매겨집니다.
• POSITION_IN_UNIQUE_CONSTRAINT
유니크 및 프리머리 키 제약 조건의 경우 NULL입니다. 외래 키 제약 조건의 경우 이 컬럼은 참조되는 테이블 키의 서수 위치입니다.
• REFERENCED_TABLE_SCHEMA
제약조건에 의해 참조되는 스키마(데이터베이스)이름입니다.
• REFERENCED_TABLE_NAME
제약조건의 의해 참조되는 테이블 이름입니다.
• REFERENCED_COLUMN_NAME
제약조건의 의해 참조되는 컬럼 이름입니다.
예제 :
다음과 같은 정의가 있는 두 개의 테이블 이름 t1 및 t3이 있다고 가정합니다.
CREATE TABLE t1
(
s1 INT,
s2 INT,
s3 INT,
PRIMARY KEY(s3)
) ENGINE=InnoDB;
CREATE TABLE t3
(
s1 INT,
s2 INT,
s3 INT,
KEY(s1),
CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
) ENGINE=InnoDB;
이 두 테이블의 경우 KEY_COLUMN_USAGE 테이블에는 두 개의 행이 있습니다.
하나의 행.
CONSTRAINT_NAME = 'PRIMARY', TABLE_NAME = 't1', COLUMN_NAME = 's3', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = NULL.
또 하나의 행.
CONSTRAINT_NAME = 'CO', TABLE_NAME = 't3', COLUMN_NAME = 's2', ORDINAL_POSITION = 1, POSITION_IN_UNIQUE_CONSTRAINT = 1.
■ PARAMETERS Table
PARAMETERS 테이블은 스토어드 루틴(스토어드 프로시저 및 스토어드 펑션)의 매개변수 및 스토어드 펑션의 리턴 값에 대한 정보를 제공합니다.
PARAMETERS 테이블에는 내장 SQL 함수 또는 사용자 정의 함수(UDF)가 포함되지 않습니다. 매개 변수 정보는 mysql.proc 테이블의 param_list컬럼 내용과 유사합니다.
각 컬럼의 정보는 다음과 같습니다.
• SPECIFIC_CATALOG
매개 변수를 포함하는 루틴이 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다.
• SPECIFIC_SCHEMA
매개변수를 포함하는 루틴이 속한 스키마(데이터베이스)의 이름입니다.
• SPECIFIC_NAME
The name of the routine containing the parameter.
매개변수를 가진 루틴의 이름입니다.
• ORDINAL_POSITION
스토어드 프로시저 또는 펑션의 연속 매개 변수의 경우 ORDINAL_POSITION 값은 1번째, 2번째, 3번째 4번째 입니다. 스토어드 펑션의 경우 펑션 반환 값에 적용되는 행도 있습니다 (RETURNS 절에 설명 됨). 반환 값은 참 매개 변수가 아니므로 이를 설명하는 행에는 다음과 같은 고유한 특성이 있습니다.
- The ORDINAL_POSITION value is 0.
반환값에 이름이 없고 모드가 적용되지 않기 때문에 PARAMETER_NAME 및 PARAMETER_MODE 값은 NULL입니다.
- PARAMETER_MODE
매개 변수의 모드. 이 값은 IN, OUT 또는 INOUT중 하나입니다. 스토어드 펑션 반환 값의 경우 이 값은 NULL입니다.
• PARAMETER_NAME
매개변수의 이름. 스토어드 펑션의 리턴값이며, 이값은 NULL입니다.
• DATA_TYPE
매개변수 데이터 타입 입니다.
DATA_TYPE 값은 다른 정보가 없는 유형 이름입니다. DTD_IDENTIFIER 값에는 유형 이름과 정밀도 또는 길이와 같은 기타 정보가 포함됩니다.
• CHARACTER_MAXIMUM_LENGTH
문자열 매개변수인 경우 문자 최대 길이를 나타냅니다.
• CHARACTER_OCTET_LENGTH
문자열 매개변수인 경우 바이트의 최대 길이를 나타냅니다.
• NUMERIC_PRECISION
숫자 매개 변수의 경우 숫자 정밀도를 나타냅니다.
• NUMERIC_SCALE
숫자 매개 변수의 경우 숫자 스케일입니다.
• DATETIME_PRECISION
시간 매개 변수의 경우 분수 초 정밀도입니다.
• CHARACTER_SET_NAME
캐릭터 문자열 변수의 경우 캐릭터 설정 이름을 나타냅니다.
• COLLATION_NAME
문자열 매개 변수의 경우 데이터 정렬 이름입니다.
• DTD_IDENTIFIER
매개변수 데이터 타입을 나타냅니다.
DATA_TYPE 값은 다른 정보가없는 유형 이름입니다. DTD_IDENTIFIER 값에는 유형 이름과 정밀도 또는 길이와 같은 기타 정보가 포함됩니다.
• ROUTINE_TYPE
저장 프로 시저의 경우 PROCEDURE, 저장 함수의 경우 FUNCTION을 표시합니다.
■ PARTITIONS Table
PARTITIONS 테이블은 테이블 파티션에 대한 정보를 제공합니다. 이 테이블의 각 행은 파티션을 나눈 테이블의 개별 파티션 또는 하위 파티션에 해당합니다.
각 컬럼의 정보는 다음과 같습니다.
• TABLE_CATALOG
테이블이 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다.
• TABLE_SCHEMA
테이블이 속한 스키마 (데이터베이스)의 이름입니다.
• TABLE_NAME
파티션을 포함하고 있는 테이블의 이름입니다.
• PARTITION_NAME
파티션의 이름입니다.
• SUBPARTITION_NAME
PARTITIONS 테이블 행이 하위 파티션을 나타내는 경우 하위 파티션의 이름입니다. 그렇지 않으면 NULL입니다.
• PARTITION_ORDINAL_POSITION
모든 파티션은 정의된 순서와 동일한 순서로 인덱싱되며 1은 첫 번째 파티션에 할당된 번호입니다. 인덱싱은 파티션이 추가, 삭제 및 재구성 될 때 변경 될 수 있습니다. 표시된 숫자는 이 컬럼이 색인 변경 사항을 고려하여 현재 순서를 반영한다는 것입니다.
• SUBPARTITION_ORDINAL_POSITION
주어진 파티션 내의 하위 파티션도 테이블 내에서 파티션이 인덱싱되는 것과 같은 방식으로 인덱싱되고 다시 인덱싱됩니다.
• PARTITION_METHOD
RANGE, LIST, HASH, LINEAR HASH, KEY 또는 LINEAR KEY 값 중 하나입니다. 즉, 사용 가능한 파티션 유형 중 하나입니다.
• SUBPARTITION_METHOD
HASH, LINEAR HASH, KEY 또는 LINEAR KEY 값 중 하나입니다. 즉,사용 가능한 하위 파티셔닝 유형 중 하나입니다.
• PARTITION_EXPRESSION
테이블의 현재 분할 스키마를 생성 한 CREATE TABLE 또는 ALTER TABLE 문에서 사용되는 분할 함수에 대한 표현식입니다.
예를 들어 다음 명령문을 사용하여 테스트 데이터베이스에서 생성된 파티션된 테이블이 있습니다.
CREATE TABLE tp (
c1 INT,
c2 INT,
c3 VARCHAR(25)
)
PARTITION BY HASH(c1 + c2)
PARTITIONS 4;
이 테이블의 파티션에 대한 PARTITIONS 테이블 행의 PARTITION_EXPRESSION 컬럼은 다음과 같이 c1 + c2를 표시합니다.
mysql> SELECT DISTINCT PARTITION_EXPRESSION
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
+----------------------+
| PARTITION_EXPRESSION |
+----------------------+
| c1 + c2 |
+----------------------+
• SUBPARTITION_EXPRESSION
이는 테이블의 분할을 정의하는데 사용되는 분할 식에 대해 PARTITION_EXPRESSION이 수행하는 것처럼 테이블의 하위 분할을 정의하는 하위 분할식에 대해 동일한 방식으로 작동합니다.
테이블에 하위 파티션이 없는 경우 이 컬럼은 NULL입니다.
• PARTITION_DESCRIPTION
이 컬럼은 RANGE 및 LIST 파티션에 사용됩니다. RANGE 파티션의 경우 파티션의 VALUES LESS THAN 절에 설정된 값이 포함되며 정수 또는 MAXVALUE일 수 있습니다. LIST 파티션의 경우 이 컬럼에는 쉼표로 구분된 정수값 목록인 파티션의 VALUES IN 절에 정의된 값이 포함됩니다.
PARTITION_METHOD가 RANGE 또는 LIST가 아닌 파티션의 경우 이 컬럼은 항상 NULL입니다.
• TABLE_ROWS
파티션안의 테이블 ROW 갯수입니다.
분할 된 InnoDB 테이블의 경우 TABLE_ROWS 열에 제공된 행 수는 SQL 최적화에 사용되는 예상 값일 뿐이며 항상 정확하지는 않을 수 있습니다.
NDB 테이블의 경우 ndb_desc 유틸리티를 사용하여 이 정보를 얻을 수도 있습니다.
• AVG_ROW_LENGTH
해당 파티션 또는 하위 파티션에 저장된 행의 평균 길이 (바이트)입니다. DATA_LENGTH를 TABLE_ROWS로 나눈 것과 같습니다.
NDB 테이블의 경우 ndb_desc 유틸리티를 사용하여이 정보를 얻을 수도 있습니다.
• DATA_LENGTH
이 파티션 또는 하위 파티션에 저장된 모든 행의 총 길이(바이트)입니다. 즉, 파티션 또는 하위 파티션에 저장된 총 바이트 수입니다.
NDB 테이블의 경우 ndb_desc 유틸리티를 사용하여 이 정보를 얻을 수도 있습니다.
• MAX_DATA_LENGTH
이 파티션 또는 하위 파티션에 저장할 수있는 최대 바이트 수입니다.
NDB 테이블의 경우 ndb_desc 유틸리티를 사용하여이 정보를 얻을 수도 있습니다.
• INDEX_LENGTH
이 파티션 또는 하위 파티션에 대한 인덱스 파일의 길이 (바이트)입니다.
NDB 테이블의 파티션의 경우 테이블이 내재적 또는 명시적 파티션을 사용하는지 여부에 관계없이 INDEX_LENGTH 열 값은 항상 0입니다. 그러나 ndb_desc 유틸리티를 사용하여 동등한 정보를 얻을 수 있습니다.
• DATA_FREE
파티션 또는 하위 파티션에 할당되었지만 사용되지 않은 바이트 수입니다.
NDB 테이블의 경우 ndb_desc 유틸리티를 사용하여이 정보를 얻을 수도 있습니다.
• CREATE_TIME
파티션 또는 하위 파티션이 생성 된 시간입니다.
• UPDATE_TIME
파티션 혹은 하위 파티션이 마지막으로 수정된 시간입니다.
• CHECK_TIME
이 파티션 또는 하위 파티션이 속한 테이블이 마지막으로 확인 된 시간입니다.
분할된 InnoDB 테이블의 경우 값은 항상 NULL입니다.
• CHECKSUM
체크섬 값 (있는 경우). 그렇지 않으면 NULL입니다.
• PARTITION_COMMENT
파티션에 주석이 있는 경우 주석 텍스트입니다. 그렇지 않은 경우 이 값은 비어 있습니다.
파티션 주석의 최대 길이는 1024자로 정의되며 PARTITION_COMMENT컬럼의 표시 너비도 1024자 (이 제한과 일치)입니다.
• NODEGROUP
이것은 파티션이 속한 노드 그룹입니다. 이것은 NDB 클러스터 테이블에만 관련됩니다. 그렇지 않으면 값은 항상 0입니다.
• TABLESPACE_NAME
파티션이 속한 테이블 스페이스의 이름입니다. 테이블에서 NDB 스토리지 엔진을 사용하지 않는 한 값은 항상 DEFAULT입니다 (이 섹션 끝 부분의 참고 참조).
▶︎ 참고사항
+ PARTITIONS는 비표준 INFORMATION_SCHEMA 테이블입니다.
+ NDB 이외의 스토리지 엔진을 사용하고 분할되지 않은 테이블은 PARTITIONS 테이블에 하나의 행이 있습니다. 그러나 PARTITION_NAME, SUBPARTITION_NAME, PARTITION_ORDINAL_POSITION, SUBPARTITION_ORDINAL_POSITION, PARTITION_METHOD, SUBPARTITION_METHOD, PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION 및 PARTITION_DESCRIPTION 컬럼의 값은 모두 NULL입니다. 또한이 경우 PARTITION_COMMENT 컬럼은 공백입니다.
+ 명시적으로 분할되지 않은 NDB 테이블에는 NDB 클러스터의 각 데이터 노드에 대해 PARTITIONS 테이블에 하나의 행이 있습니다. 각 행은 다음과 같습니다 :
- SUBPARTITION_NAME, SUBPARTITION_ORDINAL_POSITION, SUBPARTITION_METHOD, PARTITION_EXPRESSION, SUBPARTITION_EXPRESSION, CREATE_TIME, UPDATE_TIME, CHECK_TIME, CHECKSUM 및 TABLESPACE_NAME 열이 모두 NULL입니다.
- PARTITION_METHOD는 항상 KEY입니다.
- NODEGROUP 컬럼은 기본값입니다.
- PARTITION_EXPRESSION 및 PARTITION_COMMENT 컬럼이 비어 있습니다.
■ PLUGINS Table
PLUGINS 테이블은 서버 플러그인에 대한 정보를 제공합니다. 각 컬럼의 정보는 다음과 같습니다.
• PLUGIN_NAME
INSTALL PLUGIN 및 UNINSTALL PLUGIN과 같은 문에서 플러그인을 참조하는 데 사용되는 이름입니다.
• PLUGIN_VERSION
플러그인의 일반 유형 디스크립터의 버전입니다.
• PLUGIN_STATUS
지원되는 플러그인 상태를 ACTIVE, INACTIVE, DISABLED 또는 DELETED 중 하나로 표시합니다.
• PLUGIN_TYPE
STORAGE ENGINE, INFORMATION_SCHEMA 또는 AUTHENTICATION과 같은 플러그인 유형입니다.
• PLUGIN_TYPE_VERSION
플러그인의 유형별 디스크립터 버전입니다.
• PLUGIN_LIBRARY
플러그인 공유 라이브러리 파일의 이름입니다. INSTALL PLUGIN 및 UNINSTALL PLUGIN과 같은 명령문에서 플러그인 파일을 참조하는데 사용되는 이름입니다. 이 파일은 plugin_dir 시스템 변수로 이름지어진 디렉토리에 있습니다. 라이브러리 이름이 NULL이면 플러그인이 컴파일되고 UNINSTALL PLUGIN으로 제거 할 수 없습니다.
• PLUGIN_LIBRARY_VERSION
플러그인 API인터페이스 버전입니다.
• PLUGIN_AUTHOR
플러그인 작성자입니다.
• PLUGIN_DESCRIPTION
플러그인에 대한 간단한 설명입니다.
• PLUGIN_LICENSE
플러그인 라이센스 부여 방법 (예 : GPL)
• LOAD_OPTION
플러그인이로드 된 방법. 값은 OFF, ON, FORCE 또는 FORCE_PLUS_PERMANENT입니다.
▶︎ 참고사항
+ PLUGINS는 비표준 INFORMATION_SCHEMA 테이블입니다.
+ INSTALL PLUGIN으로 설치된 플러그인의 경우 PLUGIN_NAME 및 PLUGIN_LIBRARY 값도 mysql.plugin 테이블에 등록됩니다.
• SQL 및 명령어 조회
플러그인 정보는 SHOW PLUGINS 명령문에서도 사용할 수 있습니다.
SELECT
PLUGIN_NAME, PLUGIN_STATUS, PLUGIN_TYPE,
PLUGIN_LIBRARY, PLUGIN_LICENSE
FROM INFORMATION_SCHEMA.PLUGINS;
SHOW PLUGINS;
■ ROCESSLIST Table
MySQL 프로세스 목록은 서버 내에서 실행중인 스레드 집합에서 현재 수행중인 작업을 나타냅니다. PROCESSLIST 테이블은 프로세스 정보의 한 소스입니다.
각 컬럼의 정보는 다음과 같습니다.
• ID
연결 식별자입니다. 이는 SHOW PROCESSLIST 문의 Id 열에 표시되고 성능 스키마 스레드 테이블의 PROCESSLIST_ID 열에 표시되고 스레드 내에서 CONNECTION_ID () 함수에 의해 반환되는 동일한 값입니다.
• USER
명령문을 발행 한 MySQL 사용자입니다. 시스템 사용자의 값은 내부적으로 작업을 처리하기 위해 서버에서 생성 한 비 클라이언트 스레드 (예:지연된 행 처리기 스레드 또는 복제본 호스트에서 사용되는 I/O 또는 SQL 스레드)를 나타냅니다. 시스템 사용자의 경우 호스트 열에 지정된 호스트가 없습니다. 인증되지 않은 사용자는 클라이언트 연결과 연관되었지만 클라이언트 사용자의 인증이 아직 발생하지 않은 스레드를 나타냅니다. event_scheduler는 예약된 이벤트를 모니터링하는 스레드를 나타냅니다.
• HOST
명령문을 발행하는 클라이언트의 호스트 이름 (호스트가없는 시스템 사용자 제외). TCP / IP 연결의 호스트 이름은 host_name : client_port 형식으로보고되어 어떤 클라이언트가 무엇을하고 있는지 쉽게 확인할 수 있습니다.
• DB
스레드의 기본 데이터베이스 또는 선택되지 않은 경우 NULL입니다.
• COMMAND
스레드가 클라이언트를 대신하여 실행중인 명령 유형 또는 세션이 유휴 상태 인 경우 절전 모드입니다. 이 컬럼의 값은 클라이언트/서버 프로토콜의 COM_xxx 명령 및 Com_xxx 상태 변수에 해당합니다.
• TIME
스레드가 현재 상태에 있었던 시간 (초)입니다. 복제본 SQL 스레드의 경우 값은 마지막으로 복제 된 이벤트의 타임 스탬프와 복제본 호스트의 실시간 사이의 시간 (초)입니다.
• STATE
스레드가 수행중인 작업을 나타내는 작업, 이벤트 또는 상태입니다.
대부분의 상태는 매우 빠른 작업에 해당합니다. 스레드가 몇 초 동안 지정된 상태로 유지되는 경우 조사해야 할 문제가있을 수 있습니다.
• INFO
스레드가 실행중인 명령문 또는 실행중인 명령문이없는 경우 NULL입니다. 명령문은 서버로 전송 된 명령문이거나 명령문이 다른 명령문을 실행하는 경우 가장 안쪽 명령문 일 수 있습니다. 예를 들어 CALL 문이 SELECT 문을 실행하는 저장 프로 시저를 실행하는 경우 INFO 값은 SELECT 문을 표시합니다.
참고사항
+ PROCESSLIST는 비표준 INFORMATION_SCHEMA 테이블입니다.
+ SHOW PROCESSLIST 문의 출력과 마찬가지로 PROCESSLIST 테이블은 PROCESS 권한이있는 경우 다른 사용자에게 속한 스레드를 포함하여 모든 스레드에 대한 정보를 제공합니다. 그렇지 않으면 (PROCESS 권한없이) 익명이 아닌 사용자는 자신의 스레드에 대한 정보에 액세스할 수 있지만, 다른 사용자의 스레드에는 액세스할 수 없으며 익명 사용자는 스레드 정보에 액세스할 수 없습니다.
+ SQL 문이 PROCESSLIST 테이블을 참조하면 MySQL은 명령문 실행이 시작될 때 전체 테이블을 한 번 채우므로 문 동안 읽기 일관성이 유지됩니다. 다중 문 트랜잭션에는 읽기 일관성이 없습니다.
다음 명령문은 동일합니다.
mysql> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST;
mysql> SHOW FULL PROCESSLIST;
'Databases > MySQL' 카테고리의 다른 글
[MySQL] Information Schema - InnoDB : 1번째 (0) | 2020.12.22 |
---|---|
[MySQL] Information Schema - System : 2번째 (0) | 2020.12.20 |
[MySQL] FEDERATED Storage Engine - 실무 (0) | 2020.12.17 |
[MySQL] Federated Sotrage Engine - 이론편 (0) | 2020.12.15 |
[MySQL] ALTER TABLE과 Generated Columns (0) | 2020.12.12 |