14.9.1 InnoDB row 스토리지 개요
행과 연관된 컬럼의 스토리지가 쿼리 나 DML 작업의 성능에 영향을 미칩니다. 1 개의 디스크 페이지 에 들어가는 행 수가 많을수록 쿼리 및 인덱스 조회의 처리는 빨라지며, InnoDB 버퍼 풀에서 필요한 캐시 메모리는 줄어 숫자 열이나 짧은 문자열 컬럼의 업데이트 된 값을 써 내기 위해서 필요한 I / O를 줄일 수 있습니다.
각 InnoDB 테이블의 데이터는 페이지 로 분할됩니다. 각 테이블을 구성하는 페이지는 B 트리 인덱스 라는 트리 데이터 구조로 배치됩니다. 테이블 데이터와 보조 인덱스 는 모두이 유형의 구조를 사용합니다. 테이블 전체를 나타내는 B 트리 인덱스는 클러스터 된 인덱스 라고합니다. 이것은 기본 키 컬럼에 따라 구성됩니다. 인덱스 데이터 구조의 노드는 그 행의 모든 열 (클러스터 된 인덱스의 경우) 또는 인덱스 컬럼과 프라이 머리 키 컬럼 (보조 인덱스의 경우)의 값이 포함되어 있습니다.
가변 길이 컬럼이 규칙의 예외입니다. B 트리 페이지에 맞추기에는 너무 긴 BLOB
또는 VARCHAR
등의 컬럼은 오버 플로우 페이지 라는 개별적으로 할당 된 디스크 페이지에 저장됩니다. 이러한 열을 오프 페이지 열 이라고합니다. 이 컬럼의 값은 오버 플로우 페이지의 단방향 링크 목록에 저장되며 이러한 각 컬럼에 하나 이상의 오버 플로우 페이지에 자신의 목록이 있습니다. 경우에 따라서는 스토리지의 낭비를 피하고 또한 개별 페이지를 읽어야을 없애기 위해 긴 컬럼 값의 전부 또는 프리픽스가 B 트리에 저장됩니다.
다음 섹션에서는 이러한 가변 길이 컬럼을 나타내는 방법을 제어하기 위해 CREATE TABLE
및 ALTER TABLE
문에서 사용할 수있는 어구이다 ROW_FORMAT
과 KEY_BLOCK_SIZE
에 대해 설명합니다. 이 어구를 사용하려면 innodb_file_per_table
및 innodb_file_format
구성 옵션의 설정 변경이 필요할 수 있습니다