27.10.5 .frm 파일 구조에 의해 부과되는 제한
각각의 테이블에는 테이블 정의를 포함 .frm
파일이 있습니다. 서버는 다음 식을 사용하여 64K 바이트의 상한에 파일에 포함 된 일부 테이블 정보를 확인합니다.
if (info_length+(ulong) create_fields.elements*FCOMP+288+ n_length+int_length+com_length > 65535L || int_count > 255)
.frm
파일에 저장된 정보 중 식에 체크 된 부분은 64K 바이트의 제한을 초과 할 수 없습니다. 따라서 테이블 정의가이 크기에 도달하면 더 이상 열을 추가 할 수 없습니다.
식의 관련 인자는 다음과 같습니다.
info_length
는 "화면"에 필요한 영역입니다. 이것은 MySQL의 Unireg에서 상속받은 것입니다.create_fields.elements
은 열 수 있습니다.FCOMP
는 17입니다.n_length
이름 당 1 바이트의 구분 문자를 포함한 모든 컬럼 이름의 전체 길이입니다.int_length
는ENUM
및SET
컬럼의 값 목록과 관련된합니다. 이러한 맥락에서 "int"는 "정수"의 의미는 없습니다. 이것은 "간격"을 의미하고,ENUM
및SET
컬럼의 총칭입니다.int_count
는 고유의ENUM
및SET
정의의 수입니다.com_length
는 열 코멘트의 총 길이입니다.
위의 등식은 허용되는 테이블 정의에 대해 여러 의미가 있습니다.
긴 컬럼 이름을 사용하면
ENUM
또는SET
컬럼을 포함하거나 열 코멘트를 사용하거나하는 경우와 마찬가지로, 컬럼의 최대 수가 줄어들 수 있습니다.테이블에 저장할 수있는 고유의
ENUM
및SET
정의는 255 이하입니다. 동일한 요소 목록을 가진 컬럼이 제한 대해 동일한 것으로 간주됩니다. 예를 들어, 다음의 2 개의 컬럼이 테이블에 포함되는 경우, 이러한 정의가 동일하므로이 제한 대해 (2 개가 아닌) 하나 간주됩니다.e1 ENUM('a','b','c') e2 ENUM('a','b','c')
고유의
ENUM
및SET
정의의 요소 이름의 총 길이는 64K 바이트의 제한에 추가되기 때문에 특정ENUM
컬럼의 요소 수에 대한 이론적 인 제한은 65,535이며, 실제 한도는 3000 미만 입니다.