mysql의 varchar 저장 길이
P粉455093123
P粉455093123 2024-04-01 15:50:34
0
1
367

죄송합니다. 영어는 제 모국어가 아닙니다...:(

mysql .ibd 파일에 varchar의 실제 길이가 어떻게 저장되는지 알고 싶습니다. 그래서 저는 다음과 같은 테스트를 하기로 결정했습니다:

으아아아

ultraEdit을 통해 ibd 파일을 열었는데 16진수로 표시한 varchar 길이는 다음과 같습니다.

  • HEX 01은 c4의 길이, 소수는 1
  • HEX 03은 c2의 길이, 소수는 3
  • HEX 04는 c1의 길이, 소수점은 4

하지만 이 열의 값은 너무 짧고 계산하는 데 1바이트만 필요하므로 다음과 같이 또 다른 테스트를 수행했습니다.

으아아아

IBD 파일은 다음과 같습니다:

  • HEX 04는 'aaaa'가 4자이므로 c1의 길이입니다
  • HEX 7F는 c2 = REPEAT('a',127)
  • 이므로 c2의 길이(10진수 127)입니다.

하지만 C4의 16진수 길이는 64 81 ,十进制是 25729 。超过 356。我尝试加上两个十六进制,但是 64 + 81 = E5 十进制是 229,不等于 356입니다.

이게 혼란스러워서 c4의 16진수가 왜 이렇게 나타나는지, 어떻게 알 수 있는지 알고 싶습니다 356

P粉455093123
P粉455093123

모든 응답(1)
P粉744691205

아마도 다음과 같습니다:

  • x81은 01, 상위 비트가 켜짐
  • 높은 비트는 "이 숫자가 연속됨"을 의미합니다
  • 계속은 x64
  • 부분을 합치면 x0164 = 십진수 356
  • 이 됩니다.

NULL 플래그가 나타나는 위치/방법을 찾았나요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿