Loading...
MySQL 9.5 Reference Manual 9.5의 16.1 Data Dictionary Schema의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
Data dictionary 테이블은 보호되며 MySQL의 디버그 빌드에서만 접근할 수 있습니다. 그러나 MySQL은
INFORMATION_SCHEMA 테이블과
SHOW 문을 통해 data dictionary 테이블에 저장된
데이터에 대한 접근을 지원합니다. Data dictionary를 구성하는
테이블에 대한 개요는
Data Dictionary Tables를 참조하십시오.
MySQL 시스템 테이블은 여전히 MySQL 9.5에 존재하며
mysql 시스템 데이터베이스에서 SHOW TABLES
문을 실행하여 볼 수 있습니다. 일반적으로 MySQL data dictionary 테이블과
시스템 테이블의 차이는 data dictionary 테이블은
SQL 쿼리를 실행하는 데 필요한 메타데이터를 포함하는 반면,
시스템 테이블은 시간대 및 도움말 정보와 같은
보조 데이터를 포함한다는 점입니다.
MySQL 시스템 테이블과 data dictionary 테이블은 업그레이드 방식도 서로 다릅니다. MySQL 서버는 data dictionary 업그레이드를 관리합니다. How the Data Dictionary is Upgraded를 참조하십시오. MySQL 시스템 테이블을 업그레이드하려면 전체 MySQL 업그레이드 절차를 실행해야 합니다. Section 3.4, “What the MySQL Upgrade Process Upgrades”를 참조하십시오.
MySQL의 새 버전에는 data dictionary 테이블 정의에 대한 변경 사항이 포함될 수 있습니다. 이러한 변경 사항은 새로 설치된 MySQL 버전에는 포함되지만, MySQL 바이너리의 인플레이스 업그레이드를 수행하는 경우에는 새 바이너리를 사용하여 MySQL 서버를 재시작할 때 변경 사항이 적용됩니다. 시작 시, 서버의 data dictionary 버전이 data dictionary에 저장된 버전 정보와 비교되어 data dictionary 테이블을 업그레이드해야 하는지 여부를 결정합니다. 업그레이드가 필요하고 지원되는 경우, 서버는 업데이트된 정의를 사용하여 data dictionary 테이블을 생성하고, 지속된 메타데이터를 새 테이블로 복사하고, 이전 테이블을 새 테이블로 원자적으로 교체한 다음, data dictionary를 재초기화합니다.
업그레이드가 필요하지 않은 경우에는 data dictionary 테이블을 업데이트하지 않고 시작을 계속합니다.
Data dictionary 테이블의 업그레이드는 원자적(atomic) 작업으로, 필요한 모든 data dictionary 테이블이 업그레이드되거나 아니면 작업이 실패함을 의미합니다. 업그레이드 작업이 실패하면, 서버 시작은 에러와 함께 실패합니다. 이 경우, 이전 서버 바이너리와 이전 데이터 디렉터리를 사용하여 서버를 시작할 수 있습니다. 새 서버 바이너리를 다시 사용하여 서버를 시작하면 data dictionary 업그레이드가 재시도됩니다.
일반적으로 data dictionary 테이블이 성공적으로 업그레이드된 이후에는 이전 서버 바이너리를 사용하여 서버를 재시작하는 것은 불가능합니다. 그 결과, data dictionary 테이블이 업그레이드된 이후에는 MySQL 서버 바이너리를 이전 MySQL 버전으로 다운그레이드하는 것은 지원되지 않습니다.
Data dictionary 테이블은 기본적으로 보호되지만,
MySQL을 디버깅 지원과 함께 컴파일(-DWITH_DEBUG=1 CMake 옵션 사용)하고
+d,skip_dd_table_access_check debug 옵션과 수정자를 지정하면
접근할 수 있습니다. 디버그 빌드를 컴파일하는 방법에 대한 정보는
Section 7.9.1.1, “Compiling MySQL for Debugging”을
참조하십시오.
주의
Data dictionary 테이블을 직접 수정하거나 쓰는 것은 권장되지 않으며 MySQL 인스턴스를 동작 불능 상태로 만들 수 있습니다.
MySQL을 디버깅 지원과 함께 컴파일한 후에는,
다음 SET 문을 사용하여
data dictionary 테이블을 mysql 클라이언트
세션에 표시되도록 합니다:
1mysql> SET SESSION debug='+d,skip_dd_table_access_check';
다음 쿼리를 사용하여 data dictionary 테이블 목록을 가져옵니다:
1mysql> SELECT name, schema_id, hidden, type FROM mysql.tables where schema_id=1 AND hidden='System';
SHOW CREATE TABLE을 사용하여
data dictionary 테이블 정의를 볼 수 있습니다. 예를 들면 다음과 같습니다:
1mysql> SHOW CREATE TABLE mysql.catalogs\G
16 MySQL Data Dictionary
16.2 Removal of File-based Metadata Storage