Loading...
MySQL 9.5 Reference Manual 9.5의 7.3 The mysql System Schema의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
mysql schema는 system schema입니다. 이 schema에는 MySQL server가 실행되는 동안 필요로 하는 정보를 저장하는 table들이 포함됩니다. 크게 분류하면, mysql schema에는 데이터베이스 객체 메타데이터를 저장하는 data dictionary table들과 기타 운영 목적에 사용되는 system table들이 포함됩니다. 다음 설명에서는 system table 집합을 더 작은 범주로 세분화합니다.
이 절의 나머지 부분에서는 각 범주에 속하는 table들을 나열하고, 추가 정보를 위한 상호 참조를 제공합니다. Data dictionary table들과 system table들은 별도로 명시되지 않는 한 InnoDB 스토리지 엔진을 사용합니다.
mysql system table과 data dictionary table은 MySQL 데이터 디렉토리 내의 mysql.ibd라는 하나의 InnoDB 테이블스페이스 파일에 존재합니다. 이전에는 이러한 table들이 mysql 데이터베이스 디렉토리 내의 개별 테이블스페이스 파일로 생성되었습니다.
Data-at-rest 암호화는 mysql system schema 테이블스페이스에 대해 활성화할 수 있습니다. 자세한 내용은 Section 17.13, “InnoDB Data-at-Rest Encryption”을 참조하십시오.
이러한 table들은 data dictionary를 구성하며, 데이터베이스 객체에 대한 메타데이터를 포함합니다. 추가 정보는 Chapter 16, MySQL Data Dictionary를 참조하십시오.
catalogs: 카탈로그 정보.
character_sets: 사용 가능한 문자 집합에 대한 정보.
check_constraints: table에 정의된 CHECK 제약 조건에 대한 정보. 자세한 내용은 Section 15.1.24.6, “CHECK Constraints”를 참조하십시오.
collations: 각 문자 집합에 대한 collation 정보.
column_statistics: 컬럼 값에 대한 히스토그램 통계. 자세한 내용은 Section 10.9.6, “Optimizer Statistics”를 참조하십시오.
column_type_elements: 컬럼에서 사용되는 타입에 대한 정보.
columns: table의 컬럼에 대한 정보.
dd_properties: data dictionary 속성(예: 버전)을 식별하는 table입니다. 서버는 이를 사용하여 data dictionary를 더 최신 버전으로 업그레이드해야 하는지 여부를 판별합니다.
events: Event Scheduler 이벤트에 대한 정보. 자세한 내용은 Section 27.5, “Using the Event Scheduler”를 참조하십시오. 서버가 --skip-grant-tables 옵션과 함께 시작되면, event scheduler는 비활성화되며 table에 등록된 이벤트는 실행되지 않습니다. 자세한 내용은 Section 27.5.2, “Event Scheduler Configuration”을 참조하십시오.
foreign_keys, foreign_key_column_usage: 외래 키에 대한 정보.
index_column_usage: 인덱스에서 사용되는 컬럼에 대한 정보.
index_partitions: 인덱스에서 사용되는 파티션에 대한 정보.
index_stats: ANALYZE TABLE가 실행될 때 생성되는 동적 인덱스 통계를 저장하는 데 사용됩니다.
indexes: table 인덱스에 대한 정보.
innodb_ddl_log: 크래시 세이프 DDL 작업을 위해 DDL 로그를 저장합니다.
parameter_type_elements: 저장 프로시저 및 함수 파라미터, 그리고 저장 함수의 반환 값에 대한 정보.
parameters: 저장 프로시저 및 함수에 대한 정보. 자세한 내용은 Section 27.2, “Using Stored Routines”를 참조하십시오.
resource_groups: 리소스 그룹에 대한 정보. 자세한 내용은 Section 7.1.16, “Resource Groups”를 참조하십시오.
routines: 저장 프로시저 및 함수에 대한 정보. 자세한 내용은 Section 27.2, “Using Stored Routines”를 참조하십시오.
schemata: schema에 대한 정보. MySQL에서 schema는 데이터베이스이므로, 이 table은 데이터베이스에 대한 정보를 제공합니다.
st_spatial_reference_systems: 공간 데이터에 사용 가능한 공간 기준 좌표계에 대한 정보.
table_partition_values: table 파티션에서 사용되는 값에 대한 정보.
table_partitions: table에서 사용되는 파티션에 대한 정보.
table_stats: ANALYZE TABLE가 실행될 때 생성되는 동적 table 통계에 대한 정보.
tables: 데이터베이스 내 table에 대한 정보.
tablespace_files: 테이블스페이스에서 사용하는 파일에 대한 정보.
tablespaces: 활성 테이블스페이스에 대한 정보.
triggers: 트리거에 대한 정보.
view_routine_usage: view와 view에서 사용되는 저장 함수 간의 의존성에 대한 정보.
view_table_usage: view와 해당 view의 기반이 되는 table 간의 의존성을 추적하는 데 사용됩니다.
Data dictionary table은 보이지 않습니다. 이들은 SELECT로 읽을 수 없으며, SHOW TABLES의 결과에 나타나지 않고, INFORMATION_SCHEMA.TABLES table에 나열되지도 않습니다. 그러나 대부분의 경우 조회 가능한 대응되는 INFORMATION_SCHEMA table이 존재합니다. 개념적으로 INFORMATION_SCHEMA는 MySQL이 data dictionary 메타데이터를 노출하는 view를 제공합니다. 예를 들어 mysql.schemata table을 직접 select할 수는 없습니다:
1mysql> SELECT * FROM mysql.schemata; 2ERROR 3554 (HY000): Access to data dictionary table 'mysql.schemata' is rejected.
대신, 해당 정보는 대응되는 INFORMATION_SCHEMA table에서 select해야 합니다:
1mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA\G 2*************************** 1. row *************************** 3 CATALOG_NAME: def 4 SCHEMA_NAME: mysql 5DEFAULT_CHARACTER_SET_NAME: utf8mb4 6 DEFAULT_COLLATION_NAME: utf8mb4_0900_ai_ci 7 SQL_PATH: NULL 8 DEFAULT_ENCRYPTION: NO 9*************************** 2. row *************************** 10 CATALOG_NAME: def 11 SCHEMA_NAME: information_schema 12DEFAULT_CHARACTER_SET_NAME: utf8mb3 13 DEFAULT_COLLATION_NAME: utf8mb3_general_ci 14 SQL_PATH: NULL 15 DEFAULT_ENCRYPTION: NO 16*************************** 3. row *************************** 17 CATALOG_NAME: def 18 SCHEMA_NAME: performance_schema 19DEFAULT_CHARACTER_SET_NAME: utf8mb4 20 DEFAULT_COLLATION_NAME: utf8mb4_0900_ai_ci 21 SQL_PATH: NULL 22 DEFAULT_ENCRYPTION: NO 23...
mysql.indexes와 정확히 대응하는 Information Schema table은 없지만, INFORMATION_SCHEMA.STATISTICS는 대부분 동일한 정보를 포함합니다.
현재까지는 mysql.foreign_keys, mysql.foreign_key_column_usage와 정확히 대응하는 INFORMATION_SCHEMA table은 없습니다. 외래 키 정보를 얻는 표준 SQL 방식은 INFORMATION_SCHEMA의 REFERENTIAL_CONSTRAINTS 및 KEY_COLUMN_USAGE table을 이용하는 것입니다. 이들 table은 이제 foreign_keys, foreign_key_column_usage 및 기타 data dictionary table에 대한 view로 구현됩니다.
이 system table들은 사용자 계정 및 해당 계정이 보유한 권한에 대한 grant 정보를 포함합니다. 이러한 table의 구조, 내용 및 목적에 대한 추가 정보는 Section 8.2.3, “Grant Tables”를 참조하십시오.
MySQL 9.5 grant table은 InnoDB (트랜잭션) table입니다. 계정 관리 문장은 트랜잭션이며, 지정된 모든 사용자에 대해 성공하거나, 오류가 발생하는 경우에는 롤백되어 아무런 영향도 주지 않습니다.
user: 사용자 계정, 전역 권한 및 기타 nonprivilege 컬럼.
global_grants: 사용자에 대한 동적 전역 권한의 할당; 자세한 내용은 Static Versus Dynamic Privileges를 참조하십시오.
db: 데이터베이스 수준 권한.
tables_priv: table 수준 권한.
columns_priv: 컬럼 수준 권한.
procs_priv: 저장 프로시저 및 함수 권한.
proxies_priv: 프록시 사용자 권한.
default_roles: 이 table은 사용자가 연결 및 인증을 완료한 후 또는 SET ROLE DEFAULT를 실행한 후 활성화할 기본 role을 나열합니다.
role_edges: role 서브그래프에 대한 edge를 나열하는 table입니다.
주어진 user table row는 사용자 계정 또는 role을 참조할 수 있습니다. 서버는 role_edges table에서 인증 ID 간의 관계에 대한 정보를 참조하여, row가 사용자 계정, role, 또는 둘 다를 나타내는지 구분할 수 있습니다.
password_history: 비밀번호 변경에 대한 정보.이 system table들은 컴포넌트, 로더블 함수, 서버 사이드 플러그인에 대한 정보를 포함합니다:
component: INSTALL COMPONENT를 사용하여 설치된 서버 컴포넌트에 대한 레지스트리입니다. 이 table에 나열된 컴포넌트는 서버 시작 시퀀스 동안 로더 서비스에 의해 설치됩니다. 자세한 내용은 Section 7.5.1, “Installing and Uninstalling Components”를 참조하십시오.
func: CREATE FUNCTION를 사용하여 설치된 로더블 함수에 대한 레지스트리입니다. 일반적인 시작 시퀀스 동안, 서버는 이 table에 등록된 함수를 로드합니다. 서버가 --skip-grant-tables 옵션과 함께 시작되면, table에 등록된 함수는 로드되지 않으며 사용할 수 없습니다. 자세한 내용은 Section 7.7.1, “Installing and Uninstalling Loadable Functions”을 참조하십시오.
참고
mysql.func system table과 마찬가지로, Performance Schema의 user_defined_functions table도 CREATE FUNCTION를 사용하여 설치된 로더블 함수를 나열합니다. 그러나 mysql.func table과는 달리, user_defined_functions table은 서버 컴포넌트 또는 플러그인에 의해 자동으로 설치된 함수도 나열합니다. 이 차이로 인해 user_defined_functions가 어떤 함수가 설치되어 있는지 확인할 때 mysql.func보다 더 적합합니다. 자세한 내용은 Section 29.12.22.12, “The user_defined_functions Table”을 참조하십시오.
plugin: INSTALL PLUGIN을 사용하여 설치된 서버 사이드 플러그인에 대한 레지스트리입니다. 일반적인 시작 시퀀스 동안, 서버는 이 table에 등록된 플러그인을 로드합니다. 서버가 --skip-grant-tables 옵션과 함께 시작되면, table에 등록된 플러그인은 로드되지 않으며 사용할 수 없습니다. 자세한 내용은 Section 7.6.1, “Installing and Uninstalling Plugins”을 참조하십시오.서버는 다음 system table들을 로깅에 사용합니다:
general_log: general query 로그 table.
slow_log: slow query 로그 table.
Log table은 CSV 스토리지 엔진을 사용합니다.
자세한 내용은 Section 7.4, “MySQL Server Logs”를 참조하십시오.
이 system table들은 서버 사이드 help 정보를 포함합니다:
help_category: help 카테고리에 대한 정보.
help_keyword: help 토픽과 연관된 키워드.
help_relation: help 키워드와 토픽 간의 매핑.
help_topic: help 토픽 내용.
자세한 내용은 Section 7.1.17, “Server-Side Help Support”를 참조하십시오.
이 system table들은 time zone 정보를 포함합니다:
time_zone: time zone ID와 윤초 사용 여부.
time_zone_leap_second: 윤초가 발생하는 시점.
time_zone_name: time zone ID와 이름 간의 매핑.
time_zone_transition, time_zone_transition_type: time zone 설명.
자세한 내용은 Section 7.1.15, “MySQL Server Time Zone Support”를 참조하십시오.
서버는 복제를 지원하기 위해 다음 system table들을 사용합니다:
gtid_executed: GTID 값을 저장하기 위한 table. 자세한 내용은 mysql.gtid_executed Table을 참조하십시오.
ndb_binlog_index: NDB Cluster 복제를 위한 binary 로그 정보. 이 table은 서버가 NDBCLUSTER 지원을 포함하여 빌드된 경우에만 생성됩니다. 자세한 내용은 Section 25.7.4, “NDB Cluster Replication Schema and Tables”를 참조하십시오.
slave_master_info, slave_relay_log_info, slave_worker_info: replica 서버에서 replication 정보를 저장하는 데 사용됩니다. 자세한 내용은 Section 19.2.4, “Relay Log and Replication Metadata Repositories”를 참조하십시오.
위에 나열된 모든 table은 InnoDB 스토리지 엔진을 사용합니다.
이 system table들은 옵티마이저에서 사용됩니다:
innodb_index_stats, innodb_table_stats: InnoDB 퍼시스턴트 옵티마이저 통계에 사용됩니다. 자세한 내용은 Section 17.8.10.1, “Configuring Persistent Optimizer Statistics Parameters”를 참조하십시오.
server_cost, engine_cost: 옵티마이저 비용 모델은 쿼리 실행 중에 발생하는 작업에 대한 비용 추정 정보를 포함한 table을 사용합니다. server_cost에는 일반적인 서버 작업에 대한 옵티마이저 비용 추정이 포함됩니다. engine_cost에는 특정 스토리지 엔진에 특화된 작업에 대한 추정이 포함됩니다. 자세한 내용은 Section 10.9.5, “The Optimizer Cost Model”을 참조하십시오.
기타 system table들은 앞의 범주에 속하지 않습니다:
audit_log_filter, audit_log_user: MySQL Enterprise Audit가 설치된 경우, 이 table들은 감사 로그 필터 정의 및 사용자 계정에 대한 퍼시스턴트 스토리지를 제공합니다. 자세한 내용은 Audit Log Tables를 참조하십시오.
firewall_group_allowlist, firewall_groups, firewall_memebership, firewall_users, firewall_whitelist: MySQL Enterprise Firewall이 설치된 경우, 이 table들은 방화벽에서 사용하는 정보에 대한 퍼시스턴트 스토리지를 제공합니다. 자세한 내용은 Section 8.4.8, “MySQL Enterprise Firewall”을 참조하십시오.
servers: FEDERATED 스토리지 엔진에서 사용됩니다. 자세한 내용은 Section 18.8.2.2, “Creating a FEDERATED Table Using CREATE SERVER”를 참조하십시오.
innodb_dynamic_metadata: auto-increment 카운터 값과 인덱스 트리 손상 플래그와 같은 빠르게 변경되는 table 메타데이터를 저장하기 위해 InnoDB 스토리지 엔진에서 사용됩니다. 이는 InnoDB system 테이블스페이스에 존재하던 data dictionary 버퍼 table을 대체합니다.
7.2 The MySQL Data Directory
7.4 MySQL Server Logs