2016-08-19 3 views
0

두 개의 충돌하는 설명이 혼동 스럽습니다. 반복적으로 행의 최대 크기는 64KB라고 읽습니다. 예를 들어, 전체 행이 64KB를 초과하면 중간 텍스트 열을 16MB로 지정할 수 있다는 것은 무슨 뜻입니까? (InnoDB를 사용하고 있습니다.)mysql 중형 및 최대 행 크기

두 가지 관련 질문도 있습니다.

실제로 중간 텍스트 필드는 고정 길이 또는 가변 길이입니까? 덤프에서 변수로 보이지만 실제로는 16MB를 항상 할당하는 db 레코드입니까?

mediumtext가 varchar와 같은 더 작은 친척만큼 유용하거나 또는 60KB가 넘는 텍스트 파일을 사용하는 것이 더 좋다는 일반적인 견해가 있습니까?

나는 이것들이 초보자 용 질문 인 것을 알고있다. 그러나 나는 여기에 오기 전에 꽤 많은 양의 검색을했고, 나는 대답을 찾지 못했다. 귀하의 도움을 주시면 감사하겠습니다.

답변

0

행은 64KB로 제한되지 않으며, 내가 생각할 수있는 적격 한 방법조차도 아닙니다. 그 한계에 대한 링크가있는 경우 알려주십시오.

대부분의 'hard'한계를 MySQL here에서 수집했습니다.

MEDIUMTEXT은 3 바이트 길이와 0에서 16MB의 텍스트 바이트로 구현됩니다. 다른 TEXTBLOB 데이터 유형도 비슷하게 설계되었습니다. 그들은 모두 "가변 길이"가 아니라 "고정 길이"입니다.

일반적으로 응용 프로그램 코드가 처리하는 데이터에 가장 적합한 데이터 형식을 사용하십시오.

결과적으로 LONGTEXTLONGBLOB은 기본값이 16MB 인 '변수'으로 인해 직접로드하기가 어렵습니다. 나는 당신이 (innodb_log_file_size * innodb_log_files_in_group)> 10 * 가장 큰 TEXT을 가질 필요가 있는지 확신 할 수 없다. (나는 그런 문제가있는 사람은 들어 본 적이 없다고 생각한다.

일반적으로 255이 아니라 합리적인 크기의 VARCHARs을 선언 할 때 약간의 이점이있다. 더 큰 varchars와 컷오프가 무엇인지를 제외하고 TEXT. 텍스트/BLOB 대

파일이 ... 이것은 일반적으로 BLOBs에서 이미지의 저장에 관한 포럼에서 공통의 문제이다. 장점/중 접근 방식의 단점이있다.

+0

정말 고맙습니다. 답은 매우 답답합니다. 모든 행의 크기는 최대 64k입니다. 분명히, 저는 m입니다. 뭔가를 알아 듣는다. https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html –

+0

지난 해 5 월에 작성된 해당 내 의견을 확인하십시오. InnoDB의 경우,'ROW_FORMAT'의 네 가지 특징 때문에 토론은 다소 길고 복잡해집니다. InnoDB 행의 전체 크기에는 거의 제한이 없습니다. 열 당 4GB의 한계가 있습니다. 당신이 문제를 일으키는 행으로 끝나면; 우리는 아마 조언 할 수 있습니다. –

+0

[버그 리포트] (http://bugs.mysql.com/bug.php?id=82669)를 작성했습니다. –