2010-01-21 4 views
0

나는 InnoDB에 꽤 큰 테이블을 가지고 있는데, 그 이유를 고려하여 그 크기를 최소화하고 싶다. 일부 열의 경우 값은 거의 모든 행에서 동일하므로이 점을 이용하려고합니다. 예를 들어InnoDB는 어떤 값을 디스크에 저장하지 않습니까?

, 내가 int 열 (또는 datetime 또는 varchar 또는 무엇이든), 그 열에 null 값이 실제로 디스크에 저장되지 않을있는 경우? 즉, 모든 행에 숫자 1을 저장하는 것보다 작을까요?

또는 int not null default 0 열에서 01보다 적은 공간을 차지합니까?

(필자는 큰 테이블에서 시도해 볼 수는 있지만 실제 데이터는 시도하기가 느리고 데이터베이스의 크기를 측정하는 것은 까다롭기 때문에 누군가 말하는 것을 듣고 싶습니다. 어느 정도 지식이 있습니다!)

답변

0

각 열의 저장소는 데이터 형식 requirement에 따라 다릅니다.

INT가 4 바이트를 차지하지만 1은 BIGINT가 8 바이트를 차지하므로 1입니다.

성능이 문제가 아닌 경우 InnoDB의 compression을 확인하십시오.

0

int는 int이며, 따라서 0은 1보다 적은 공간을 차지하지 않습니다. 그리고 NULL은 단지 같은 공간에있는 특별한 값이 될 것입니다.

NULL이 데이터 유형보다 상당히 작은 값으로 표시되거나 전혀 저장되지 않는 스파 스 열 설정에 대해 묻는 것처럼 들립니다. InnoDB에 대해서는 아무 것도 찾을 수 없지만 SQL Server 2008의 스파 스 (sparse) 열에 대해서는 여러 가지가 있습니다.

관련 문제