• 카테고리

    질문 & 답변
  • 세부 분야

    데이터베이스

  • 해결 여부

    미해결

CHAR VARCHAR 질문입니다!

24.06.14 11:30 작성 24.06.14 13:49 수정 조회수 198

4

안녕하세요 먼저 좋은 강의 감사드립니다.

CHAR vs VARCHAR를 수강하던 중 궁금한 점이 생겨 질문 남깁니다!


1. CHAR의 경우 미리 공간을 할당해두기 때문에 update 시 파편화되는 부분이 없지만,
VARHAR의 경우 길이가 더 길게 update 시 처음 레코드가 저장되었던 공간은 delete marking 후에 새롭게 빈 공간에 레코드를 저장하는 것으로 이해했습니다.
그렇다면 VARCHAR에서 길이가 더 짧거나 길이가 같게 update를 하는 경우는 어떻게 동작하는걸까요?

 

  1. UTF8MB4 CHAR 경우 미리 할당된 데이터 보다 더 큰 데이터를 업데이트 하게 된다면 VARCHAR 처럼 처음 레코드가 저장되었던 공간은 delete marking후 새롭게 빈 공간에 레코드를 저장하게 되는걸까요? 예시 : CHAR(10)에 '한글'을 저장했다가, '한글 연습'을 업데이트 하는 경우 VARCHAR 처럼 동작하는지가 궁금합니다.

     

     

답변 1

답변을 작성해보세요.

3

안녕하세요.

 

1번 : 레코드의 길이가 부족하지 않기 때문에, 다른 위치로 옮겨지지 않고 그 자리에 업데이트됩니다.

2번 : CHAR 타입의 길이가 얼마냐에 따라서 다릅니다. 동영상 강의 내용의 예제에서 언급했던 CHAR(10) 타입의 경우, "한글"을 저장하면 6바이트를 사용하고 4바이트는 비워두지만, "한글연습"으로 업데이트되면 12바이트가 필요해져서, 최종적으로는 다른 위치로 레코드가 옮겨지게 됩니다. 만약 "한글"에서 "한글날"로 업데이트되면 9바이트만 필요하기 때문에 위치가 옮겨지지 않고 그 자리에 그대로 업데이트될 수 있을 것으로 보여요.

 

감사합니다.

dlkfjan님의 프로필

dlkfjan

질문자

2024.06.14

감사합니다!

채널톡 아이콘