Loading...
MySQL 9.5 Reference Manual 9.5의 10.4.6 Limits on Table Size의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
MySQL 데이터베이스의 실제 최대 테이블 크기는 보통 MySQL 내부 제한이 아니라, 운영 체제의 파일 크기 제약에 의해 결정됩니다. 운영 체제 파일 크기 제한에 대한 최신 정보는 사용 중인 운영 체제의 문서를 참조하십시오.
Windows 사용자는 FAT 및 VFAT(FAT32)가 MySQL과 함께 프로덕션 용도로 사용하기에 적합하지 않다 는 점에 유의해야 합니다. 대신 NTFS를 사용하십시오.
full-table 오류에 직면했다면, 다음과 같은 여러 가지 원인이 있을 수 있습니다:
디스크가 꽉 찼을 수 있습니다.
InnoDB 테이블을 사용 중이며 InnoDB 테이블스페이스 파일의 공간이 부족해졌을 수 있습니다. 최대 테이블스페이스 크기는 테이블의 최대 크기이기도 합니다. 테이블스페이스 크기 제한에 대해서는 Section 17.21, “InnoDB Limits”를 참조하십시오.
일반적으로, 크기가 1TB보다 큰 테이블의 경우 여러 테이블스페이스 파일로 테이블을 파티셔닝하는 것이 권장됩니다.
운영 체제 파일 크기 제한에 도달했을 수 있습니다. 예를 들어, 최대 2GB까지의 파일만 지원하는 운영 체제에서 MyISAM 테이블을 사용하고 있고, 데이터 파일 또는 인덱스 파일에 대해 이 제한에 도달한 경우입니다.
MyISAM 테이블을 사용 중이며, 테이블에 필요한 공간이 내부 포인터 크기로 허용되는 범위를 초과한 경우입니다. MyISAM은 기본적으로 데이터 파일과 인덱스 파일이 최대 256TB까지 커지는 것을 허용하지만, 이 제한은 허용되는 최대 크기인 65,536TB(2567 − 1 bytes)까지 변경할 수 있습니다.
OS가 대용량 파일을 지원하고 기본 제한보다 큰 MyISAM 테이블이 필요한 경우, CREATE TABLE 문은 AVG_ROW_LENGTH 및 MAX_ROWS 옵션을 지원합니다. Section 15.1.24, “CREATE TABLE Statement”를 참조하십시오. 서버는 이 옵션들을 사용하여 허용할 테이블의 크기를 결정합니다.
기존 테이블에 대해 포인터 크기가 너무 작은 경우, ALTER TABLE로 옵션을 변경하여 테이블의 최대 허용 크기를 늘릴 수 있습니다. Section 15.1.11, “ALTER TABLE Statement”를 참조하십시오.
1ALTER 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이면 최대 4GB까지, 값이 6이면 최대 256TB까지 허용됩니다. 고정 스토리지 포맷을 사용하는 테이블은 더 큰 최대 데이터 길이를 가집니다. 스토리지 포맷 특성에 대해서는 Section 18.2.3, “MyISAM Table Storage Formats”를 참조하십시오.
다음 문을 사용하여 최대 데이터 크기와 인덱스 크기를 확인할 수 있습니다:
1SHOW TABLE STATUS FROM db_name LIKE 'tbl_name';
또한 myisamchk -dv /path/to/table-index-file를 사용할 수도 있습니다. Section 15.7.7, “SHOW Statements” 또는 Section 6.6.4, “myisamchk — MyISAM Table-Maintenance Utility”를 참조하십시오.
MyISAM 테이블에 대한 파일 크기 제한을 우회하는 다른 방법은 다음과 같습니다:
large 테이블이 읽기 전용인 경우, myisampack을 사용하여 테이블을 압축할 수 있습니다. myisampack은 일반적으로 적어도 50% 정도 테이블을 압축하므로, 결과적으로 훨씬 더 큰 테이블을 가질 수 있습니다. myisampack은 여러 테이블을 하나의 테이블로 머지할 수도 있습니다. Section 6.6.6, “myisampack — Generate Compressed, Read-Only MyISAM Tables”를 참조하십시오.
MySQL에는 동일한 구조를 가진 여러 MyISAM 테이블 집합을 하나의 MERGE 테이블처럼 다룰 수 있게 해 주는 MERGE 라이브러리가 포함되어 있습니다. Section 18.7, “The MERGE Storage Engine”를 참조하십시오.
MEMORY(HEAP) 스토리지 엔진을 사용하고 있는 경우, max_heap_table_size 시스템 변숫값을 늘려야 합니다. Section 7.1.8, “Server System Variables”를 참조하십시오.
10.4.5 Limits on Number of Databases and Tables
10.4.7 Limits on Table Column Count and Row Size