14.8.2 파일 형식 호환성 확인
InnoDB 1.1에는 새로운 파일 형식을 사용하는 InnoDB 데이터 파일에 대해 이전 릴리스의 MySQL 서버를 실행 한 경우에 발생할 수있는 충돌이나 데이터 손상으로부터 보호하기위한 검사가 일부 포함 있습니다. 이러한 검사는 서버가 시작되었을 때와 테이블에 처음 액세스 할 때 실행됩니다. 이 섹션에서는 이러한 검사들을 제어하는 방법 및 발생할 수있는 에러 나 경고의 상태에 대해 설명합니다.
하위 호환성
하위 호환성 고려 사항은 최신 버전의 InnoDB (InnoDB Plugin 또는 InnoDB 1.1을 포함 MySQL 5.5 이상)을 이전 버전 (MySQL 5.1 이전 InnoDB Plugin 대신 내장 InnoDB 포함)과 함께 사용하는 경우에만 적용됩니다. 호환성 문제가 발생할 가능성을 최소화하기 위해 MySQL 5.1 이전의 모든 데이터베이스 서버를 InnoDB Plugin에 따라 표준화 할 수 있습니다.
일반적으로 새로운 버전의 InnoDB는 충돌 중단 결과 오류나 손상 등의 위험없이, 이전 버전의 InnoDB에서 안전하게 읽거나 쓸 수없는 테이블 또는 인덱스를 만들 수 있습니다. InnoDB 1.1에는 이러한 상태에서 보호하고 데이터베이스 파일이나 InnoDB의 버전 간 호환성 유지에 도움이 메커니즘이 포함되어 있습니다. 이 메커니즘을 사용하면 하위 호환되지 않는 디스크 파일을 생성하는 새로운 기능의 잘못된 사용을 방지함으로써 InnoDB 자료의 몇 가지 새로운 기능 (성능 향상 및 버그 수정 등)을 이용하면서 계속 이전 버전의 InnoDB 데이터베이스를 사용하는 옵션을 유지할 수 있습니다.
버전의 InnoDB에 의해 특정 파일 형식이 지원되는 경우 (그 형식이 기본인지 여부에 관계없이) 그 형식 또는 이전 형식을 필요로하는 모든 테이블을 쿼리하고 업데이트 할 수 수 있습니다. 새로운 기능을 사용하여 새 테이블 만들기 만은 활성화되어있는 특정 파일 형식에 따라 제한됩니다. 반대로, 테이블 공간에 현재 실행중인 프로그램에서 지원되지 않는 파일 형식을 사용하는 테이블 또는 인덱스가 포함되어있는 경우는 읽기 액세스도 해당 테이블 공간에 전혀 액세스 할 수 없습니다.
InnoDB 테이블 스페이스를 이전 파일 형식으로 "다운 그레이드"는 이전의 형식을 사용하는 테이블 스페이스의 새 테이블에 데이터를 복사하는 방법 밖에 없습니다. 이것은 섹션 14.8.4 "파일 형식의 다운 그레이드" 에 설명되어있는 ALTER TABLE
문에서 실행할 수 있습니다.
기존의 InnoDB 테이블 스페이스 파일 형식을 결정하는 가장 쉬운 방법은 SHOW TABLE STATUS
명령을 사용하거나 테이블 INFORMATION_SCHEMA.TABLES
를 쿼리하여 거기에 포함되어있는 테이블의 특성을 검사하는 것입니다. 테이블 Row_format
이 'Compressed'
또는 'Dynamic'
로보고 된 경우 해당 테이블을 포함하는 테이블 스페이스는 Barracuda 형식을 사용하고 있습니다. 그렇지 않으면 이전 InnoDB 파일 형식 인 Antelope를 사용하고 있습니다.
내부 정보
InnoDB 테이블마다 테이블 스페이스 파일 ( *.ibd
파일로 표시됩니다)에는 모든 파일 형식 식별자 레이블이 지정됩니다. 시스템 테이블 스페이스 ( ibdata
파일로 표시됩니다)은 InnoDB 데이터베이스 파일 그룹에서 사용되는 "최고의"파일 형식의 태그가 해당 파일이 열릴 때이 태그가 확인됩니다.
압축 테이블을 작성하거나 ROW_FORMAT=DYNAMIC
에서 테이블을 작성하면 해당 .ibd
파일의 파일 헤더와 InnoDB 데이터 사전의 테이블 타입이 Barracuda 파일 형식의 식별자로 업데이트됩니다. 그 시점에서이 테이블이 새 파일 형식을 지원하지 InnoDB 버전에서는 사용할 수 없습니다. 비정상적인 동작으로부터 보호하기 위해 InnoDB 버전 5.0.21 이상에서 테이블이 열릴 때 호환성 검사를 실행합니다. (대부분의 경우 ALTER TABLE
문은 테이블을 재 작성하고이를 통해 그 특성을 변경합니다. 테이블을 다시 작성하지 않고 인덱스를 추가하거나 제거하는 특별한 경우는 InnoDB Fast Index Creation 에 설명 된 있습니다.)
ib-file 세트의 정의
혼란을 피하기 위해이 설명에서는 "ib-file 세트"라는 용어는 InnoDB가 단위로 관리하는 일련의 운영 체제 파일을 표시하는 것으로 정의합니다. ib-file 세트에는 다음 파일이 포함되어 있습니다.
시스템 테이블 스페이스 (하나 이상의
ibdata
파일). 여기에는 내부의 시스템 정보 (내부의 카탈로그 및 Undo 정보 포함)가 포함되는 것 외에 사용자 데이터와 인덱스도 포함될 수 있습니다.0 개 이상의 단일 테이블의 테이블 스페이스 ( "file per table"파일이라고도 불리며
*.ibd
파일 이름이 지정됩니다).InnoDB 로그 파일. 일반적으로
ib_logfile0
과ib_logfile1
의 두 가지입니다. 충돌 복구와 백업에 사용됩니다.
"ib-file 세트"는 InnoDB 테이블에 대한 메타 데이터가 포함 된 해당 .frm
파일은 포함되지 않습니다. .frm
파일은 MySQL에 의해 작성 및 관리되고 InnoDB 내부의 메타 데이터와 동기화되지 않을 수 있습니다.
1 개의 "ib-file 세트"에 (경우에 따라서는 여러 데이터베이스) 여러 테이블을 저장할 수 있습니다. (MySQL에서는 "데이터베이스"는 다른 시스템에서 "스키마"또는 "카탈로그"라는 테이블의 논리적 모음입니다.)