source

InnoDB는 문자열을 어떻게 저장합니까?

bestscript 2023. 1. 15. 17:27

InnoDB는 문자열을 어떻게 저장합니까?

은 '짧다'짧다'는 됩니다.CHAR ★★★★★★★★★★★★★★★★★」VARCHARInnoDB가 있습니다.

  • 는 ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ?CHAR(10)바바바바바바바바바바바바바바바바?
  • 뒷부분의 공백은 어떻게 되나요?
  • 문자당 1바이트 이상이 필요한 문자 세트는 어떻습니까?
  • 는 어떻게 ?VARCHAR(10)CHAR(10)
  • EXPLAIN는 인덱스된 모든 Varchar에 2바이트 길이의 필드가 포함되어 있음을 나타냅니다.2번이요?1】(cf((cf)key_len를 참조해 주세요.
  • 다른 은요?ROW_FORMATs

이 질문에서는 다루지 않습니다(너무 광범위하지 않도록 하기 위해):

  • ★★는?TEXT.
  • 255, 191, 오프 페이지 스토리지 등은 어떻습니까?
  • 인덱스에서 char/varchar로 시작하는 동작(공통 프레픽스 삭제).
  • /varchar와 char하는 MEMORY8.에서는 어떤 또한 버전 8.0에서는 어떤 변경이 이루어졌는지 확인합니다.
  • ROW_FORMAT는 주로 페이지 외 저장소의 사용 시기를 결정하는 데 긴 문자열 열에 큰 영향을 미칩니다.

MySQL 문서:

「 」의 CHAR ★★★★★★★★★★★★★★★★★」VARCHAR입니다.CHAR (10)되어 있기 이 필요합니다.VARCHAR (10)1바이트(1바이트 문자 집합) + 길이 접두사(길이 255 이하일 경우 1개, 그렇지 않을 경우 2개)만 사용합니다.key_len의 이 왜 key_len인지 EXPLAIN)2★★★★★★★★★★★★★★★★」

공백이 안 공백이 할 수 요.VARCHAR.CHAR사일런트하게 의미가 . 을 사용법CHAR말미에 공백이 표시됩니다.

링크의 문자 세트에 대해서, 다음의 문자의 수를 확인할 수 있습니다.CHAR ★★★★★★★★★★★★★★★★★」VARCHAR동일하지만 스토리지에는 문자당 1~4바이트가 필요합니다.여기에서는 지원되는 문자 세트 목록과 문자당 바이트 수를 보여 줍니다.

InnoDB에 대해 다양한 행 형식을 읽은 적이 있습니다.

다중형식의 특성:

내부적으로 InnoDB는 CHAR(10)과 같은 고정 길이 문자 열을 고정 길이 형식으로 저장합니다.InnoDB는 VARCHAR 열에서 후행 공백을 잘라내지 않습니다.
InnoDB는 길이가 768바이트 이상인 고정 길이 필드를 가변 길이 필드로 인코딩하며, 페이지 외부에 저장할 수 있습니다.예를 들어 문자 집합의 최대 바이트 길이가 utf8mb4와 같이 3보다 클 경우 CHAR(255) 열은 768바이트를 초과할 수 있습니다.

COMPLECT형식 특성:

  • 내부적으로 가변 길이 문자 집합의 경우, InnoDB는 CHAR(10)와 같은 고정 길이 문자 열을 고정 길이 형식으로 저장합니다.

    InnoDB는 VARCHAR 열에서 후행 공백을 잘라내지 않습니다.

  • 내부적으로 utf8mb3 및 utf8mb4와 같은 가변 길이의 문자 집합의 경우 InnoDB는 후행 공백을 트리밍하여 CHAR(N)을 N바이트로 저장하려고 합니다.CHAR(N) 열 값의 바이트 길이가 N바이트를 초과할 경우 InnoDB는 열 값 바이트 길이의 최소값으로 후행 공백을 잘라냅니다.CHAR(N) 열의 최대 길이는 최대 문자 바이트 길이 × N입니다.

    InnoDB는 CHAR(N)용으로 최소 N바이트를 예약합니다.대부분의 경우 최소 공간N을 예약하면 인덱스 페이지의 플래그멘테이션을 발생시키지 않고 컬럼 갱신을 실행할 수 있습니다.이에 비해 ROW_FORMAT=LOSE의 경우 CHAR(N) 열이 최대 문자 바이트 길이 × N을 차지합니다.

    InnoDB는 길이가 768바이트 이상인 고정 길이 필드를 가변 길이 필드로 인코딩하며, 페이지 외부에 저장할 수 있습니다.예를 들어 문자 집합의 최대 바이트 길이가 utf8mb4와 같이 3보다 클 경우 CHAR(255) 열은 768바이트를 초과할 수 있습니다.

    ROW_FORMAT=DYNAMIC 및 ROW_FORMAT=COMPRESSED는 ROW_FORMAT=COMPRESSED와 같은 방법으로 CHAR 스토리지를 처리합니다.

...

Dynamic 행 형식과 COMPRESSED 행 형식은 COMPLECT 행 형식의 변형이므로 COMPLECT 행 형식과 동일한 방법으로 CHAR 스토리지를 처리합니다.

언급URL : https://stackoverflow.com/questions/48426699/how-does-innodb-store-character-columns