예를 들어서


Col1 int           // (이건 4byte)

Col2 char(100)  // (이건 100bye)

Col3 char(3896) // (이건 3896bye)


이래서 총 4000바이트이면 


페이지 크기가 8KB 이니까 한페이지에 2개의 데이터행씩 들어갈텐데


이걸


ColA varchar(1000) // (가변크기 최대 1000byte)

ColB varchar(2000) // (가변크기 최대 2000byte)

ColC varchar(3000) // (가변크기 최대 3000byte)


이걸 ColA, B, C 세 컬럼 모두 데이터 꽉채워 입력했다고 치면


6000byte차서 페이지 크기 8KB에 데이터행 넣고 나면 나머지 2KB는 낭비되잖아....


이걸 이렇게 하면 어떻게 되냐?


ColA, B, C 세 컬럼에 모두 딱 333글자씩만 넣어서 333byte씩만 차지했다면 하나의 데이터행에 999byte씩 들어가잖아


계산하기 편하게 그냥 1000 바이트라고 치고


그러면 쓴만큼만 계산해서 한 페이지에 최대 8개의 데이터행 넣을 수 있는 거냐?


사소한 문제는 패스하고 개념적으로 저게 맞냐?


varchar 같은 가변크기 타입쓰면 쓴만큼만 계산해서 페이지 크기 8KB 알뜰하게 사용 가능?


그래서 varchar쓰면 동적으로 저런 작업하는 연산비용 들어가겠지만 스토리지 알뜰하게 사용할 수 있는 장점이 있다 이건가?