가 requ에 있습니다 : 아래 링크를 통해 이동하시기 바랍니다 InnoDB에서 한 페이지 (16k)는 최소한 두 개의 레코드를 포함해야한다. 오버 헤드를 빼면 레코드 한도 당 8k에 가깝습니다.
BLOB/TEXT 형식은 더 길 수 있고 행 형식에 따라 InnoDB가 다른 방식으로 처리 할 수 있습니다.
컴팩트 COMPACT
의 경우 규칙은 다음과 같습니다. 레코드가 ~ 8k보다 길면 페이지는 BLOB 필드의 처음 768 바이트를 저장합니다. 필드의 나머지 부분은 외부 페이지 체인에 저장됩니다. 15 BLOB 필드가 각각 500 바이트 + 다른 오버 헤드로 레코드 당 ~ 8k의 한계를 초과합니다.
DYNAMIC
형식이 BLOB 용으로 최적화되었습니다. 한도는 레코드 당 ~ 8k로 동일합니다. 그러나 레코드가 제한을 초과하면 외부 페이지 (20 바이트)에 대한 참조 만 저장됩니다. BLOB 값은 외부 페이지에만 저장됩니다. 따라서 하나의 레코드에 더 많은 BLOB 필드가 포함될 수 있습니다.
DYNAMIC
행 형식은 Barracuda
파일 형식에서만 사용할 수 있습니다. my.cnf
에서 활성화하는 것을 잊지 마십시오
innodb_file_per_table=ON
innodb_file_format=Barracuda
이 문제를 해결하려면 DYNAMIC
형식으로 테이블을 만들어야합니다.
CREATE TABLE testtext
(
id INTEGER,
text1 TEXT,
text2 TEXT,
text3 TEXT,
text4 TEXT,
text5 TEXT,
text6 TEXT,
text7 TEXT,
text8 TEXT,
text9 TEXT,
text10 TEXT,
text11 TEXT,
text12 TEXT,
text13 TEXT,
text14 TEXT,
text15 TEXT,
text16 TEXT,
text17 TEXT,
text18 TEXT,
text19 TEXT,
text20 TEXT,
text21 TEXT,
PRIMARY KEY (id)
)
engine=innodb
row_format=dynamic;
CREATE TABLE 문을 표시 할 수 있습니까? – Riedsio
생성 쿼리 표 testtext ( ID INTEGER 만들기이다 텍스트 1 TEXT, TEXT2 텍스트 텍스트 3 TEXT, 텍스트 4 텍스트 TEXT5 텍스트 TEXT6 텍스트 TEXT7 텍스트 TEXT8 텍스트 TEXT9 TEXT, TEXT10 TEXT, TEXT11 TEXT, TEXT12 TEXT, TEXT13 TEXT, TEXT14 TEXT, TEXT15 TEXT, TEXT16 TEXT, TEXT17 TEXT, TEXT18 TEXT,TEXT19 TEXT, TEXT20 TEXT, TEXT21 TEXT, PRIMARY KEY (ID) ) 엔진 = InnoDB; ROW_FORMAT을 사용하여 동적으로 설정해 보았습니다. 하지만 그 중 하나도 도움이되지 않습니다 .. 테이블 상태는 여전히 테이블을 압축 형식으로 보여줍니다. – Ashok