MySQL RDBMS에서 테이블의 각 레코드에 대한 실제 디스크 사용 요구 공간을 계산하려고합니다.MySQL 레코드 디스크 사용 계산 | 내가 맞습니까?
테이블 이런 구조 가지고
- ID INT 4 바이트;
- VARCHAR (34) 34 바이트;
- INT 4 바이트;
- INT (5) 4 바이트;
- INT 4 바이트;
- INT 4 바이트 또한 외래 키입니다.
그래서 5 개의 INT 필드와 최대 34 개의 문자 (즉 34 바이트)의 VARCHAR가 있습니다.
나는이 개 질문이 : 내가 바로 내가 그 말을하고 할 때, 또는 오버 헤드 바이트도 있습니다입니다) 물론, 변수 VARCHAR로 (
1) 총 레코드 당 54 바이트해야을하는 디스크 사용 공간을 예측할 때 고려해야 할 사항은 무엇입니까?
2) 나는 그 필드에 정확히 5 자리 만 저장해야하기 때문에 CHAR (5) 대신 INT (5)를 사용했다. (나는 응용 프로그램으로 regExp와 문자열 길이로 INT (5)가 5 자리수 이상의 정수일 수 있음을 알아 두십시오.) 하지만 이것은 디스크 사용량 공간 최적화에 의해 5 바이트 인 CHAR (5) 대신 INT (4 바이트)를 사용하는 것과 같은 것으로 간주 될 수 있습니까? 즉, 레코드 당 1 바이트가 더 많습니까?
관심을 가져 주셔서 감사합니다. 자체 오프셋에서
1 바이트를 사용
확인이 답변을 사용하는 reasoaanle 모양) 2 - 약간의 계산이있다 http://dba.stackexchange.com/questions/59909/i-need-for-the-index를 계산하는 방법/59910 # 59910 – akuzminsky
정확한 크기를 계산하려면 추가 정보를 제공하십시오. 1) ID가 기본 키입니까? 2) VARCHAR 필드 - 인코딩은 무엇입니까? 3) 필드는 NULL 가능합니까? – akuzminsky
예 ID가 PRIMARY KEY AUTO_INCREMENT이고 VARCHAR 필드의 인코딩이 utf-8로 인코딩되어 있습니다 (테이블의 CHARSET이 UTF8로 설정 됨). 모든 필드는 NOT NULL입니다. 마지막 INT 필드는 앞에서 말한 것처럼 외래 키입니다. 얼마나 많은 오버 헤드가 누락 되었습니까? – tonix