MySQL 8.0에서 추가된 모든 기능

MySQL 8.0에서 추가된 모든 기능 – Information Schema

Estimated reading: 7 minutes 66 views
  • MySQL 8.0 Reference Manual로 연결되는 원본글의 링크가 대부분 다 깨져있습니다. 아마 매뉴얼의 URL이 전부 변경된 것 같습니다. 원래 가리키던 링크가 어디인지 정확히 알 수는 없으나, 최대한 관련성 있어보이는 페이지 URL로 수정해두었습니다.

1. 정보 스키마는 데이터 사전 테이블 위에 구현된 뷰로 구현됩니다.

[원본제공링크 1]

MySQL 8.0에서는 정보 스키마(INFORMATION_SCHEMA)데이터 사전(Data Dictionary) 테이블 위에 구현된 뷰(View)로 재설계되었습니다. 이는 데이터베이스의 메타데이터 접근 방식을 개선하여 성능 향상과 일관성을 제공합니다. 사용자는 이제 데이터 사전 테이블을 직접 접근하지 않고도 뷰를 통해 데이터베이스 객체에 대한 정보를 효율적으로 조회할 수 있습니다.

2. VIEW_TABLE_USAGE

[원본제공링크 1]

VIEW_TABLE_USAGE 뷰는 정보 스키마의 새로운 테이블로, 각 뷰(View)가 사용하는 테이블과 뷰의 종속성을 보여줍니다. 이를 통해 특정 뷰가 어떤 테이블이나 다른 뷰에 의존하고 있는지 확인할 수 있어, 스키마 변경 시 영향 분석에 유용합니다.

예시:

+--------------+-------------+---------------------------------+---------------+--------------------+--------------------+
| VIEW_CATALOG | VIEW_SCHEMA | VIEW_NAME                       | TABLE_CATALOG | TABLE_SCHEMA       | TABLE_NAME         |
+--------------+-------------+---------------------------------+---------------+--------------------+--------------------+
| def          | sys         | innodb_buffer_stats_by_schema   | def           | information_schema | INNODB_BUFFER_PAGE |
| def          | sys         | x$innodb_buffer_stats_by_schema | def           | information_schema | INNODB_BUFFER_PAGE |
| def          | sys         | innodb_buffer_stats_by_table    | def           | information_schema | INNODB_BUFFER_PAGE |
+--------------+-------------+---------------------------------+---------------+--------------------+--------------------+

3. VIEW_ROUTINE_USAGE

[원본제공링크 1]

VIEW_ROUTINE_USAGE 뷰는 뷰가 사용하는 스토어드 프로시저와 함수의 종속성을 제공합니다. 이를 통해 뷰와 루틴 간의 관계를 파악하여 개발 및 유지보수 시 의존성 관리에 도움을 줍니다.

+---------------+--------------+---------------------------------+------------------+-----------------+-------------------------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME                      | SPECIFIC_CATALOG | SPECIFIC_SCHEMA | SPECIFIC_NAME                 |
+---------------+--------------+---------------------------------+------------------+-----------------+-------------------------------+
| def           | sys          | x$ps_schema_table_statistics_io | def              | sys             | extract_schema_from_file_name |
| def           | sys          | x$ps_schema_table_statistics_io | def              | sys             | extract_table_from_file_name  |
| def           | sys          | io_global_by_file_by_latency    | def              | sys             | format_path                   |
+---------------+--------------+---------------------------------+------------------+-----------------+-------------------------------+

4. KEYWORDS

[원본제공링크 1]

KEYWORDS 테이블은 MySQL에서 사용되는 예약어와 키워드의 목록을 제공합니다. 이는 컬럼명이나 테이블명을 지정할 때 예약어와의 충돌을 방지하는 데 유용합니다.

+------------+----------+
| WORD       | RESERVED |
+------------+----------+
| ACCESSIBLE |        1 |
| ACCOUNT    |        0 |
| ACTION     |        0 |
+------------+----------+

5. COLUMN_STATISTICS

[원본제공링크 1]

COLUMN_STATISTICS 테이블은 각 테이블의 컬럼별 통계 정보를 제공합니다. 이 컬럼별 통계정보라는 것은 결국 히스토그램 통계 정보에 해당합니다. 옵티마이저가 쿼리 실행 계획을 수립할 때 사용하는 카디널리티분포도 등의 정보를 확인하여 쿼리 튜닝에 활용할 수 있습니다.

mysql> select * from  information_schema.COLUMN_STATISTICS  limit 3;
+-------------+------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SCHEMA_NAME | TABLE_NAME | COLUMN_NAME | HISTOGRAM                                                                                                                                                                                                                                          |
+-------------+------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| minhang     | test1      | data        | {"buckets": [[1, 0.3], [2, 0.5], [3, 1.0]], "data-type": "int", "null-values": 0.0, "collation-id": 8, "last-updated": "2024-11-24 11:44:46.791145", "sampling-rate": 1.0, "histogram-type": "singleton", "number-of-buckets-specified": 10}       |
| minhang     | test1      | name        | {"buckets": [[1, 0.3], [2, 0.5], [3, 1.0]], "data-type": "int", "null-values": 0.0, "collation-id": 8, "last-updated": "2024-11-24 11:44:50.180161", "sampling-rate": 1.0, "histogram-type": "singleton", "number-of-buckets-specified": 10}       |
| minhang     | test2      | data        | {"buckets": [[3, 0.8333333333333334], [10, 1.0]], "data-type": "int", "null-values": 0.0, "collation-id": 8, "last-updated": "2024-11-24 11:44:56.732163", "sampling-rate": 1.0, "histogram-type": "singleton", "number-of-buckets-specified": 10} |
+-------------+------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

6. ST_GEOMETRY_COLUMNS

[원본제공링크 1]

ST_GEOMETRY_COLUMNS 뷰는 공간 데이터 타입을 가진 컬럼의 정보를 제공합니다. GIS 기능을 사용하는 테이블과 컬럼을 파악하여 공간 데이터 관리에 도움이 됩니다.

+---------------+--------------+---------------+-------------+----------+--------+--------------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME    | COLUMN_NAME | SRS_NAME | SRS_ID | GEOMETRY_TYPE_NAME |
+---------------+--------------+---------------+-------------+----------+--------+--------------------+
| def           | minhang      | spatial_table | location    | NULL     |   NULL | geometry           |
+---------------+--------------+---------------+-------------+----------+--------+--------------------+

7. ST_SPATIAL_REFERENCE_SYSTEMS

[원본제공링크 1]

ST_SPATIAL_REFERENCE_SYSTEMS 뷰는 공간 참조 시스템(SRS)에 대한 정보를 제공합니다. 각 SRS의 SRID, 이름, 정의 등을 확인하여 좌표계 관리에 활용할 수 있습니다.

*************************** 1. row ***************************
                SRS_NAME: 
                  SRS_ID: 0
            ORGANIZATION: NULL
ORGANIZATION_COORDSYS_ID: NULL
              DEFINITION: 
             DESCRIPTION: NULL
*************************** 2. row ***************************
                SRS_NAME: Anguilla 1957 / British West Indies Grid
                  SRS_ID: 2000
            ORGANIZATION: EPSG
ORGANIZATION_COORDSYS_ID: 2000
              DEFINITION: PROJCS["Anguilla 1957 / British West Indies Grid",GEOGCS["Anguilla 1957",DATUM["Anguilla 1957",SPHEROID["Clarke 1880 (RGS)",6378249.145,293.465,AUTHORITY["EPSG","7012"]],AUTHORITY["EPSG","6600"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4600"]],PROJECTION["Transverse Mercator",AUTHORITY["EPSG","9807"]],PARAMETER["Latitude of natural origin",0,AUTHORITY["EPSG","8801"]],PARAMETER["Longitude of natural origin",-62,AUTHORITY["EPSG","8802"]],PARAMETER["Scale factor at natural origin",0.9995,AUTHORITY["EPSG","8805"]],PARAMETER["False easting",400000,AUTHORITY["EPSG","8806"]],PARAMETER["False northing",0,AUTHORITY["EPSG","8807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["E",EAST],AXIS["N",NORTH],AUTHORITY["EPSG","2000"]]
             DESCRIPTION: NULL
*************************** 3. row ***************************
                SRS_NAME: Antigua 1943 / British West Indies Grid
                  SRS_ID: 2001
            ORGANIZATION: EPSG
ORGANIZATION_COORDSYS_ID: 2001
              DEFINITION: PROJCS["Antigua 1943 / British West Indies Grid",GEOGCS["Antigua 1943",DATUM["Antigua 1943",SPHEROID["Clarke 1880 (RGS)",6378249.145,293.465,AUTHORITY["EPSG","7012"]],TOWGS84[-255,-15,71,0,0,0,0],AUTHORITY["EPSG","6601"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017453292519943278,AUTHORITY["EPSG","9122"]],AXIS["Lat",NORTH],AXIS["Lon",EAST],AUTHORITY["EPSG","4601"]],PROJECTION["Transverse Mercator",AUTHORITY["EPSG","9807"]],PARAMETER["Latitude of natural origin",0,AUTHORITY["EPSG","8801"]],PARAMETER["Longitude of natural origin",-62,AUTHORITY["EPSG","8802"]],PARAMETER["Scale factor at natural origin",0.9995,AUTHORITY["EPSG","8805"]],PARAMETER["False easting",400000,AUTHORITY["EPSG","8806"]],PARAMETER["False northing",0,AUTHORITY["EPSG","8807"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["E",EAST],AXIS["N",NORTH],AUTHORITY["EPSG","2001"]]
             DESCRIPTION: NULL

8. ST_UNITS_OF_MEASURE

[원본제공링크 1]

ST_UNITS_OF_MEASURE 뷰는 공간 참조 시스템에서 사용하는 단위(Unit)에 대한 정보를 제공합니다. 길이, 각도 등의 단위를 확인하여 공간 연산 시 정확한 단위 사용을 보장합니다.

+-------------------------------------+-----------+--------------------+-------------+
| UNIT_NAME                           | UNIT_TYPE | CONVERSION_FACTOR  | DESCRIPTION |
+-------------------------------------+-----------+--------------------+-------------+
| British link (Sears 1922 truncated) | LINEAR    |         0.20116756 |             |
| foot                                | LINEAR    |             0.3048 |             |
| British yard (Benoit 1895 B)        | LINEAR    | 0.9143992042898124 |             |
+-------------------------------------+-----------+--------------------+-------------+

9. RESOURCE_GROUPS

[원본제공링크 1]

RESOURCE_GROUPS 테이블은 서버에서 정의된 리소스 그룹에 대한 정보를 제공합니다. 리소스 그룹은 CPU 및 IO 자원 사용을 제어하기 위한 기능으로, 각 그룹의 이름, 유형, 할당된 VCPU 등을 확인할 수 있습니다.

+---------------------+---------------------+------------------------+--------------------+-----------------+
| RESOURCE_GROUP_NAME | RESOURCE_GROUP_TYPE | RESOURCE_GROUP_ENABLED | VCPU_IDS           | THREAD_PRIORITY |
+---------------------+---------------------+------------------------+--------------------+-----------------+
| USR_default         | USER                |                      1 | 0x302D3139         |               0 |
| SYS_default         | SYSTEM              |                      1 | 0x302D3139         |               0 |
| SYS_internal        | SYSTEM              |                      1 | 0x302D3139         |               0 |
+---------------------+---------------------+------------------------+--------------------+-----------------+

10. CHECK_CONSTRAINTS

[원본제공링크 1, 2]

CHECK_CONSTRAINTS 뷰는 테이블에 정의된 CHECK 제약 조건에 대한 정보를 제공합니다. 제약 조건의 이름, 속해있는 카탈로그/스키마, Check 검사 조건 등을 확인하여 데이터 무결성을 관리할 수 있습니다.

+--------------------+-------------------+-----------------+-----------------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | CHECK_CLAUSE    |
+--------------------+-------------------+-----------------+-----------------+
| def                | minhang           | check_age       | (`age` >= 18)   |
| def                | minhang           | check_salary    | (`salary` >= 0) |
+--------------------+-------------------+-----------------+-----------------+

11. APPLICABLE_ROLES

[원본제공링크 1]

APPLICABLE_ROLES 뷰는 현재 사용자에게 적용 가능한 역할(Role) 목록을 보여줍니다. 이는 사용자가 SET ROLE 문을 통해 활성화할 수 있는 역할을 확인하는 데 유용합니다.

+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+
| USER  | HOST | GRANTEE | GRANTEE_HOST | ROLE_NAME | ROLE_HOST | IS_GRANTABLE | IS_DEFAULT | IS_MANDATORY |
+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+
| mysql | %    | mysql   | %            | newrole   | %         | NO           | NO         | NO           |
+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+

12. ADMINISTRABLE_ROLE_AUTHORIZATIONS

[원본제공링크 1]

ADMINISTRABLE_ROLE_AUTHORIZATIONS 뷰는 현재 사용자가 사용할 수 있는 역할과 다른 계정에 부여할 수 있는 역할에 대한 정보를 제공합니다. 이는 역할의 생성, 부여, 회수 등의 관리 작업을 수행할 때 도움이 됩니다.

+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+
| USER  | HOST | GRANTEE | GRANTEE_HOST | ROLE_NAME | ROLE_HOST | IS_GRANTABLE | IS_DEFAULT | IS_MANDATORY |
+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+
| mysql | %    | role1   | %            | role2     | %         | YES          | NO         | NO           |
+-------+------+---------+--------------+-----------+-----------+--------------+------------+--------------+

13. ENABLED_ROLES

[원본제공링크 1]

ENABLED_ROLES 뷰는 현재 세션에서 활성화된 역할 목록을 제공합니다. 이는 현재 세션의 권한 컨텍스트를 이해하고 접근 제어를 관리하는 데 유용합니다.

mysql> set role role1;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from ENABLED_ROLES ;
+-----------+-----------+------------+--------------+
| ROLE_NAME | ROLE_HOST | IS_DEFAULT | IS_MANDATORY |
+-----------+-----------+------------+--------------+
| role1     | %         | NO         | NO           |
+-----------+-----------+------------+--------------+
1 row in set (0.00 sec)

14. ROLE_TABLE_GRANTS

[원본제공링크 1]

ROLE_TABLE_GRANTS 뷰는 역할에 부여된 테이블 수준의 권한 정보를 제공합니다. 역할 기반 권한 관리를 수행할 때 특정 역할이 어떤 테이블에 어떤 권한을 가지고 있는지 확인할 수 있습니다.

+---------+--------------+---------+--------------+---------------+--------------+------------+----------------+--------------+
| GRANTOR | GRANTOR_HOST | GRANTEE | GRANTEE_HOST | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
+---------+--------------+---------+--------------+---------------+--------------+------------+----------------+--------------+
| mysql   | localhost    | role1   | %            | def           | minhang      | test1      | Select         | NO           |
+---------+--------------+---------+--------------+---------------+--------------+------------+----------------+--------------+

15. ROLE_COLUMN_GRANTS

[원본제공링크 1]

ROLE_COLUMN_GRANTS 뷰는 역할에 부여된 컬럼 수준의 권한 정보를 제공합니다. 컬럼 단위의 세부적인 권한 관리를 위해 역할의 권한을 상세히 파악할 수 있습니다.

+---------+--------------+---------+--------------+---------------+--------------+------------+-------------+----------------+--------------+
| GRANTOR | GRANTOR_HOST | GRANTEE | GRANTEE_HOST | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
+---------+--------------+---------+--------------+---------------+--------------+------------+-------------+----------------+--------------+
| mysql   | localhost    | role1   | %            | def           | minhang      | test2      | data        | Update         | NO           |
| mysql   | localhost    | role1   | %            | def           | minhang      | test2      | id          | Select         | NO           |
+---------+--------------+---------+--------------+---------------+--------------+------------+-------------+----------------+--------------+

16. ROLE_ROUTINE_GRANTS

[원본제공링크 1]

ROLE_ROUTINE_GRANTS 뷰는 역할에 부여된 스토어드 프로시저와 함수에 대한 권한 정보를 제공합니다. 이는 프로시저와 함수에 대한 실행 권한을 역할 기반으로 관리할 때 유용합니다.

+---------+--------------+---------+--------------+------------------+-----------------+---------------+-----------------+----------------+--------------+----------------+--------------+
| GRANTOR | GRANTOR_HOST | GRANTEE | GRANTEE_HOST | SPECIFIC_CATALOG | SPECIFIC_SCHEMA | SPECIFIC_NAME | ROUTINE_CATALOG | ROUTINE_SCHEMA | ROUTINE_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
+---------+--------------+---------+--------------+------------------+-----------------+---------------+-----------------+----------------+--------------+----------------+--------------+
| mysql   | localhost    | role1   | %            | def              | minhang         | test_sp       | def             | minhang        | test_sp      | Execute        | NO           |
+---------+--------------+---------+--------------+------------------+-----------------+---------------+-----------------+----------------+--------------+----------------+--------------+

Leave a Comment



이 문서 공유

MySQL 8.0에서 추가된 모든 기능 – Information Schema

링크 복사

CONTENTS