MySQL innodb 테이블 구조

MySQL이 테이블을 열고 닫기 이전에 MySQL의 파일 구조에 대해 먼저 알아보겠습니다. MySQL에서 File**-**Per**-**Table 라는 시스템 변수가 존재하며 해당 값이 1로 설정되었을 경우 테이블 마다 .ibd 파일이 생성됩니다.

Untitled

다만 5.7과 8.0에서 innodb의 파일 구조는 조금 상이합니다. 5.7에서는 하나의 테이블 생성시 .frm 파일과 .ibd 파일이 생성되는데요. 각 파일에 저장된 내용은 다음과 같습니다.

Untitled

8.0에서는 파일 기반 메타데이터 스토리지 문제로 인한 값비싼 파일 스캔, 파일 시스템 관련 취약성, 복제 및 충동 복구 오류 등 다양한 문제로 인해 테이블의 구조를 .frm 파일이 아닌 mysql.ibd 이라는 Data dictionary 테이블에 저장되어 관리됩니다.

Untitled

아래는 8.0에서 삭제된 메타데이터 파일입니다.

Untitled

MySQL 테이블 관련 시스템 변수

MySQL에는 테이블 파일을 열 때 사용되는 다양한 변수들이 존재합니다