Loading...
MySQL 9.5 Reference Manual 9.5의 17.21 InnoDB Limits의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 섹션은 InnoDB 테이블, 인덱스, 테이블스페이스 및 InnoDB 스토리지 엔진의 기타 측면에 대한 제한을 설명합니다.
하나의 테이블은 최대 1017개의 컬럼을 포함할 수 있습니다. 가상 생성 컬럼도 이 제한에 포함됩니다.
하나의 테이블은 최대 64개의 secondary indexes를 포함할 수 있습니다.
인덱스 키 프리픽스 길이 제한은 로우 포맷이
DYNAMIC 또는
COMPRESSED인 InnoDB 테이블의 경우 3072바이트입니다.
인덱스 키 프리픽스 길이 제한은 로우 포맷이
REDUNDANT 또는
COMPACT인 InnoDB 테이블의 경우 767바이트입니다. 예를 들어, utf8mb4 문자 집합을 사용하고 문자당 최대 4바이트를 가정하면, TEXT 또는
VARCHAR 컬럼에서 191자를 초과하는
column prefix 인덱스를 사용할 때 이 제한에 도달할 수 있습니다.
제한을 초과하는 인덱스 키 프리픽스 길이를 사용하려고 시도하면 에러가 반환됩니다.
MySQL 인스턴스를 생성할 때
innodb_page_size 옵션을 지정하여 InnoDB page size를 8KB 또는 4KB로 줄이는 경우, 인덱스 키의 최대 길이는 16KB 페이지 크기에서 3072바이트라는 제한을 기준으로 비례하여 낮아집니다. 즉, 페이지 크기가 8KB일 때 최대 인덱스 키 길이는 1536바이트이고, 페이지 크기가 4KB일 때는 768바이트입니다.
인덱스 키 프리픽스에 적용되는 제한은 전체 컬럼 인덱스 키에도 동일하게 적용됩니다.
1ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
innodb_page_size인 16KB의 경우 최대 로우 크기는 약 8000바이트입니다. 하지만 InnoDB 페이지 크기가 64KB인 경우 최대 로우 크기는 대략 16000바이트입니다. LONGBLOB 및
LONGTEXT 컬럼은 4GB 미만이어야 하며, BLOB 및
TEXT 컬럼을 포함한 전체 로우 크기는 4GB 미만이어야 합니다.로우가 페이지의 절반보다 작으면, 로우 전체가 페이지 내에 로컬하게 저장됩니다. 절반을 초과하면, Section 17.11.2, “File Space Management”에 설명된 대로 로우가 페이지의 절반 이내에 들어갈 때까지 가변 길이 컬럼이 선택되어 외부 페이지 밖(off-page) 스토리지로 이동됩니다.
InnoDB는 내부적으로 65,535바이트보다 큰 로우 크기를 지원하지만, MySQL 자체는 모든 컬럼의 결합된 크기에 대해 65,535의 로우 크기 한도를 적용합니다. Section 10.4.7, “Limits on Table Column Count and Row Size”를 참조하십시오.
최대 테이블 또는 테이블스페이스 크기는 서버의 파일 시스템에 의해 영향을 받는데, 이 파일 시스템은 InnoDB에서 정의한 내부 64TiB 크기 한도보다 작은 최대 파일 크기를 강제할 수 있습니다. 예를 들어, Linux의 ext4 파일 시스템은 최대 파일 크기가 16TiB이므로, 최대 테이블 또는 테이블스페이스 크기는 64TiB 대신 16TiB가 됩니다. 또 다른 예로, FAT32 파일 시스템은 최대 파일 크기가 4GB입니다.
더 큰 시스템 테이블스페이스가 필요한 경우, 하나의 큰 데이터 파일 대신 여러 개의 더 작은 데이터 파일을 사용하여 구성하거나, 테이블 데이터를 파일-퍼-테이블 및 일반 테이블스페이스 데이터 파일 전체에 분산하십시오.
InnoDB 로그 파일의 합산 최대 크기는 512GB입니다.
최소 테이블스페이스 크기는 10MB보다 약간 큽니다. 최대 테이블스페이스 크기는 InnoDB 페이지 크기에 따라 달라집니다.
Table 17.24 InnoDB Maximum Tablespace Size
| InnoDB Page Size | Maximum Tablespace Size |
|---|---|
| 4KB | 16TB |
| 8KB | 32TB |
| 16KB | 64TB |
| 32KB | 128TB |
| 64KB | 256TB |
최대 테이블스페이스 크기는 테이블의 최대 크기이기도 합니다.
하나의 InnoDB 인스턴스는 최대 2^32 (4294967296)개의 테이블스페이스를 지원하며, 이 중 일부 테이블스페이스는 언두 및 임시 테이블용으로 예약됩니다.
공유 테이블스페이스는 최대 2^32 (4294967296)개의 테이블을 지원합니다.
파일 이름을 포함한 테이블스페이스 파일의 경로는 Windows의 MAX_PATH 제한을 초과할 수 없습니다. Windows 10 이전에는 MAX_PATH 제한이 260자입니다. Windows 10 version 1607부터는 일반 Win32 파일 및 디렉터리 함수에서 MAX_PATH 제한이 제거되지만, 새 동작을 사용하도록 설정해야 합니다.
동시 읽기-쓰기 트랜잭션과 관련된 제한은 Section 17.6.6, “Undo Logs”를 참조하십시오.
17.20.5 InnoDB Error Handling
17.22 InnoDB Restrictions and Limitations