2016-08-17 1 views
1

나는 MySQL 데이터베이스가 있고 그 안에 데이터가없는 VARCHAR (32)가 있는지 알고 싶습니다. 어떤 공간이든, kb과 같은 걸까요?내부에 데이터가없는 VARCHAR (32)가 있으면 공간이 필요합니까?

뭔가를 확인하기 위해 32 문자의 해시를 저장하지만 더 이상 사용하지 않을 것이므로 DB 공간이 필요하면이 필드를 null로 만들 수 있습니다. 또는 비어 있습니다.

그렇다면 일부 공간을 절약하기 위해이 필드를 null 또는 비워야합니까?

+0

답변에 관계없이이 방법으로 중요한 공간을 차지할 수 있을지 의심 스럽습니다. – HoneyBadger

+0

주의하시기 바랍니다. MySQL을 릴리스하면 행을 삭제해도 공간이 할당되지 않습니다. 그것을 풀어내는 유일한 방법은 테이블을 저장하고 잘라내어 다시 채우는 것입니다. –

+0

[매뉴얼에 기재] (http://dev.mysql.com/doc/refman/5.7/en/char.html) 그것은 당신이 그것을 읽는 것을 괴롭힐 수있는 한 모든 것이 아주 멋지게 설명됩니다. – RiggsFolly

답변

2

NULL 값은 NULL 플래그의 공간을 차지합니다. 또한 데이터 유형의 고정 된 구성 요소도 저장됩니다. 길이 구성 요소 인 VARCHAR()의 경우 1 또는 2 바이트입니다.

VARCHAR()의 저장 요구 사항은 documentation에 설명되어 있습니다. VARCHAR(32)의 경우 길이는 단일 바이트로 저장됩니다.

Arrgh. MySQL에서는 저장소 엔진에 의존한다는 사실을 잊어 버렸습니다. 위의 내용은 MyISAM에서도 마찬가지입니다. InnoDB와는 다릅니다. 답변은 good입니다.

관련 문제