개발자
ChatGPT에게 물어보니 null로 저장하는 것도 추가적으로 메모리가 필요하다고 얘기하는 데, false로 저장하는 것보다 조금 더 들 수 있다고 하네요. null보다 false로 저장하는 게 조금 더 효율적일 거라는데, 이게 사실인가요??
답변 1
조금 더 효율적일 수는 있는데, 의미있는 수준의 효율성라고 이야기하긴 어렵다고 생각합니다. Storage 차지 용량 관점에서는 데이터 100만건 당 1MB 정도 거든요. 구체적인 숫자는 Column 개수에 따릅니다. DB에서 NULL이 차지하는 용량에 대해서는 DB NULL Bitmap이라는 키워드로 찾아보시면 됩니다. MySQL, MongoDB 등 DBMS가 무엇인지에 따라 내용이 달라질 수 있습니다. 따라서 관심있는 DBMS를 선택하고 찾아보시면 좋을 것 같아요! 제가 알고 있는 MySQL 기준으로 설명드리겠습니다. 보통은 NULL Bitmap을 행 별로 저장합니다. 특히 NULL 허용 열이 하나라도 있으면 생성됩니다. 100개 데이터가 있다면 NULL Bitmap도 100개 있는거죠. 예를 들어 다음과 같은 테이블이 있다고 가정해보겠습니다. CREATE TABLE NULL_BITMAP_TESTS ( id INT NOT NULL AUTO_INCREMENT, info VARCHAR(1000) ); 이 경우 info 열이 NULL 허용이므로, 행 별로 NULL Bitmap이 생성됩니다. 현재 2개 열이 있으므로 NULL Flag를 위해 2비트를 필요로 합니다. 하지만 MySQL은 NULL Bitmap을 바이트 단위로 저장하기 때문에, 반올림해서 1바이트를 필요로 합니다. 만약 9개 열이라면 2바이트를 사용하는 식입니다. 만약 모든 열이 NOT NULL이라면, NULL Bitmap은 사용하지 않습니다. 불필요하기 때문이죠. 참고자료: https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html https://dba.stackexchange.com/questions/312507/storage-space-used-for-null-values
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
지금 가입하면 모든 질문의 답변을 볼 수 있어요!