2014-04-13 4 views
1

내가 MySQL을 (이노)에서 테이블을 설계하고 얻을하고 디스크에 절대 최소한의 공간을 차지 있는지 확인하려면 방법. 내 질문은 : 행 저장소 크기가 테이블의 열 순서에 종속되어 있습니까?최소 MySQL의 행 크기

bigint (8 bytes) 
    tinyint (1 byte) 
    int (4 bytes) 
    int (4 bytes) 
    tinyint (1 byte) 

이 테이블 취한 디스크 공간이 경우에 하나보다 다른 로우를인가 (순서 2) :

예를 들어, 여기에 열 순서 1

bigint (8 bytes) 
    tinyint (1 byte) 
    tinyint (1 byte) 
    int (4 bytes) 
    int (4 bytes) 

아니면 아마도 이것 (주문 3) :

나는 오래 전의 환경에서 일하는 것을 기억한다. 필드가 4 바이트 경계를 넘어서 위치하지 않아야 함). MySQL 5.x에서 차이가 있습니까?

미리 감사드립니다. 당신이 억 기록이있을 때 레코드 당 바이트를 저장

+0

는, 어쩌면 당신은 MySQL의를 선택하지만, 특정 크기에 최적화 된 데이터베이스를 사용하거나 뭔가를 직접 작성하지 않아야합니다. 왜 그렇게 중요한가요? 디스크 크기는 거의 무료입니다. – GolezTrol

+0

글쎄, 나는이 테이블이 수백만 줄 (수십억 개)을 가질 것으로 기대하고있다. MySQL이이 시나리오에서 얼마나 잘 작동 할지는 모르지만 10 억 배의 바이트를 절약하는 데 10 억 바이트가 소요됩니다. – janman05

+0

InnoDB는 MyISAM보다 더 많은 공간을 차지하는데, InnoDB는 원자 적 연산보다는 트랜잭션을 사용하기 때문에 디스크 사용에 대해 염려하는 사람이라면 MyISAM 사용을 고려해 볼 수 있습니다. http://dev.mysql.com/doc/refman/5.0/en/innodb-physical-record.html을 참조하십시오. 그것은 열 순서에 대해 아무 것도 말하지 않기 때문에 제 생각에는 중요하지 않다는 것입니다. – Plenka

답변

0

참으로 억 바이트이지만, 1000 바이트 기록에 저장된 바이트는 관계없이 레코드 수의, 여전히 0.1 %에 저장됩니다. 그것은 모두 친척입니다. :)

당신이도 자주도 빠른 액세스 많은 양의 데이터를 저장하려면

, 당신은 실제로 데이터를 압축 저장 시설에서 더 많은 혜택을 누릴 수 있습니다.

https://dev.mysql.com/doc/refman/5.0/en/archive-storage-engine.html

그것은 그들이 삽입 될 때 행을 압축하는 특별한 스토리지 엔진입니다 : 어쩌면 당신은 MySQL을의 ARCHIVE 스토리지 엔진을 볼 수있다. 이 인덱스를 가지고 있지 않으며, 단지 insertselect (NO deleteupdate)를 지원하지만, 그냥 당신이 찾고 그냥 뭐 수 있습니다 출력 데이터 (로깅 등)이 많이 필요 응용 프로그램. 저장 크기는 * 중요 * 경우