27.10.3 테이블 크기 제한
MySQL 데이터베이스의 사실상 최대 테이블 크기는 일반적으로 MySQL의 내부 제한이 아니라 운영 체제의 파일 크기에 대한 제약에 의해 판단합니다. 다음 표는 운영 체제의 파일 크기 제한에 대한 몇 가지 예를 보여줍니다. 이것은 대략적인 안내 일뿐 확실한 것은 없습니다. 가장 새로운 정보는 사용중인 운영 체제에 고유의 문서를 반드시 확인하십시오.
운영 체제 | 파일 크기 제한 |
---|---|
Win32 (FAT / FAT32) | 2GB / 4GB |
Win32 (NTFS) | 2TB (이를 초과 할 수 있음) |
Linux 2.2-Intel 32 비트 | 2GB (LFS : 4GB) |
Linux 2.4+ | (ext3 파일 시스템 사용) 4TB |
Solaris 9/10 | 16TB |
OS X (HFS +) | 2TB |
Windows 사용자의 경우 FAT 및 VFAT (FAT32)는 MySQL에서 실전 사용에 적합하다고 간주되지 않습니다. 대신 NTFS를 사용하십시오.
Linux 2.2에서는 ext2 파일 시스템 용 Large File Support (LFS) 패치를 사용하면 크기가 2G 바이트보다 큰 MyISAM
테이블을 얻을 수 있습니다. 대부분의 최신 Linux 배포는 커널 2.4 이상을 기반으로 필요한 LFS 패치는 모두 포함되어 있습니다. Linux 2.4에서는 큰 파일 (최대 2T 바이트)를 지원하는 ReiserFS에 대한 패치도 존재하고 있습니다. JFS와 XFS는 Linux에서 페타 바이트 이상의 파일이 있습니다.
Linux에서 LFS에 대한 자세한 소개는 http://www.suse.de/~aj/linux_lfs.html 의 Andreas Jaeger 씨의 "Large File Support in Linux"페이지를 참조하십시오.
전체 테이블 오류가 발생한 경우, 그 이유는 여러 가지가 있습니다.
디스크가 꽉 찼을 가능성이있다.
InnoDB
스토리지 엔진이 여러 파일에서 만들 수있는 테이블 공간에InnoDB
테이블을 보유하고있다. 따라서 테이블이 개별 파일의 최대 크기를 초과 할 수 있습니다. 테이블 공간은 원시 디스크 파티션을 포함 할 수 매우 큰 테이블이 허용됩니다. 최대 테이블 공간 크기는 64T 바이트입니다.InnoDB
테이블을 사용하는 경우,InnoDB
테이블 스페이스의 공간이 부족합니다. 이 경우 해결책은InnoDB
테이블 공간을 확장하는 것입니다. 섹션 14.5.7 "InnoDB 로그 파일의 크기 나 변경 및 InnoDB 테이블 스페이스의 크기 변경" 을 참조하십시오.지원하는 파일 크기가 최대 2G 바이트의 운영 체제에서
MyISAM
테이블을 사용하고 데이터 파일 또는 인덱스 파일이 한계에 도달하고있다.MyISAM
테이블을 사용하여 테이블에 필요한 공간이 내부 포인터 크기에 따라 허용되는 크기를 초과하고있다.MyISAM
에서는 데이터 파일과 인덱스 파일의 크기는 기본적으로 최대 256T 바이트이지만,이 제한은 65,536T 바이트 (256 7 - 1 바이트)의 최대 크기까지 변경할 수 있습니다.기본 제한보다 큰
MyISAM
테이블이 필요하며, 운영 시스템이 큰 파일을 지원하는 경우CREATE TABLE
문은AVG_ROW_LENGTH
옵션과MAX_ROWS
옵션을 지원합니다. 섹션 13.1.17 "CREATE TABLE 구문" 을 참조하십시오. 서버는이 옵션을 사용하여 허용 테이블의 크기를 결정합니다.포인터 크기가 기존 테이블에 너무 작은 경우 테이블의 최대 크기를 늘리도록
ALTER TABLE
에서 옵션을 변경할 수 있습니다. 섹션 13.1.7 "ALTER TABLE 구문" 을 참조하십시오.ALTER TABLE
tbl_name
MAX_ROWS = 1000000000 AVG_ROW_LENGTH =nnn
;BLOB
또는TEXT
컬럼을 포함하는 테이블에만AVG_ROW_LENGTH
를 지정해야합니다. 이 경우, MySQL은 행 수만큼에 따라 필요한 공간을 최적화 할 수 없습니다.MyISAM
테이블의 기본 크기 제한을 변경하려면 내부 행 포인터에 사용되는 바이트 수를 설정myisam_data_pointer_size
을 설정합니다.MAX_ROWS
옵션을 지정하지 않으면 새 테이블의 포인터 크기를 설정하기 위해이 값이 사용됩니다.myisam_data_pointer_size
값은 2-7로 지정할 수 있습니다. 4 값은 4G 바이트까지의 테이블을 허용하고 6 값은 256T 바이트까지의 테이블을 허용합니다.다음 문을 사용하면 데이터 파일과 인덱스 파일의 최대 크기를 확인할 수 있습니다.
SHOW TABLE STATUS FROM
db_name
LIKE 'tbl_name
';myisamchk -dv / path / to / table-index-file도 사용할 수 있습니다. 섹션 13.7.5 "SHOW 구문」 또는 섹션 4.6.3 "myisamchk - MyISAM 테이블 유지 보수 유틸리티" 를 참조하십시오.
MyISAM
테이블의 파일 크기 제한을 해결하는 다른 방법은 다음과 같습니다.큰 테이블이 읽기 전용 인 경우, myisampack를 사용하여이 테이블을 압축 할 수 있습니다. myisampack는 일반적으로 적어도 50 % 압축하기 때문에 실질적으로 더 큰 테이블을 보유 할 수 있습니다. myisampack에서 여러 테이블을 하나의 테이블에 병합 할 수 있습니다. 섹션 4.6.5 "myisampack - 압축 된 읽기 전용 MyISAM 테이블 생성" 을 참조하십시오.
MySQL은 단일
MERGE
테이블과 동일한 구조를 가지는MyISAM
테이블의 모임을 처리 할 수있는MERGE
라이브러리가 포함되어 있습니다. 섹션 15.7 "MERGE 저장 엔진" 을 참조하십시오.
MEMORY
(HEAP
) 스토리지 엔진을 사용하는 경우,max_heap_table_size
시스템 변수의 값을 늘려야합니다. 섹션 5.1 "서버 시스템 변수" 를 참조하십시오.