2013-03-21 7 views
0

테이블의 행 길이가 매우 길어질 수 있습니다. 올바르게 읽으면 BIGINT 값이 1이고 전체 8 바이트를 차지합니다. http://dev.mysql.com/doc/refman/5.5/en/storage-requirements.htmlBIT는 사용하지 않는 공간을 1 바이트까지 채 웁니?

이것은 비효율적으로 보입니다.

BIT은 동일한 방식으로 작동합니까 아니면 가변 길이 하이브리드입니까? 나는 1 바이트 미만을 사용하면 다른 BIT이있을 때를 제외하고는 1 바이트의 디스크 공간을 소비한다는 것을 알고 있습니다. 예를 들어열은 올바르게 읽으면 1 바이트 만 차지합니다. 나는 다른 BIT 열이있는 BIT 41이있는 경우 2^41-1 반대로 말하면

, 해당 열의 0있는 행은 물론 차지되는 1 바이트 또는 전체 6 바이트를 소모합니다 전체 41 비트?

답변

1

According to the docs 등 운이 좋지 않은 것 같습니다. 조금은 항상 지정한 크기가 될 것입니다. 사실, it will most likely be larger.은 가변 길이이므로 비트를 BLOB 필드로 직렬화하는 것을 고려해 볼 수 있습니다.

+0

두 번째 링크의 핵심 부분은 다음과 같습니다. "이 규칙의 예외는 4 바이트 정렬이 아닌 BIT 유형입니다 .MIT 클러스터 테이블에서 BIT (M) 열에는 M 비트의 저장 공간이 필요합니다. 그러나 테이블 정의에 하나 이상의 BIT 열 (최대 32 비트 열)이 포함 된 경우 NDBCLUSTER는 행 당 4 바이트 (32 비트)를 예약합니다. 테이블 정의에 32 비트가 넘는 열 (최대 64 개의 열)이면 NDBCLUSTER는 행 당 8 바이트 (즉, 64 비트)를 예약합니다. " – Patashu