This section describes limits for InnoDB
      tables, indexes, tablespaces, and other aspects of the
      InnoDB storage engine.
- A table can contain a maximum of 1017 columns. Virtual generated columns are included in this limit. 
- A table can contain a maximum of 64 secondary indexes. 
- The index key prefix length limit is 3072 bytes for - InnoDBtables that use- DYNAMICor- COMPRESSEDrow format.- The index key prefix length limit is 767 bytes for - InnoDBtables that use the- REDUNDANTor- COMPACTrow format. For example, you might hit this limit with a column prefix index of more than 191 characters on a- TEXTor- VARCHARcolumn, assuming a- utf8mb4character set and the maximum of 4 bytes for each character.- Attempting to use an index key prefix length that exceeds the limit returns an error. - If you reduce the - InnoDBpage size to 8KB or 4KB by specifying the- innodb_page_sizeoption when creating the MySQL instance, the maximum length of the index key is lowered proportionally, based on the limit of 3072 bytes for a 16KB page size. That is, the maximum index key length is 1536 bytes when the page size is 8KB, and 768 bytes when the page size is 4KB.- The limits that apply to index key prefixes also apply to full-column index keys. 
- A maximum of 16 columns is permitted for multicolumn indexes. Exceeding the limit returns an error. - ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
- The maximum row size, excluding any variable-length columns that are stored off-page, is slightly less than half of a page for 4KB, 8KB, 16KB, and 32KB page sizes. For example, the maximum row size for the default - innodb_page_sizeof 16KB is about 8000 bytes. However, for an- InnoDBpage size of 64KB, the maximum row size is approximately 16000 bytes.- LONGBLOBand- LONGTEXTcolumns must be less than 4GB, and the total row size, including- BLOBand- TEXTcolumns, must be less than 4GB.- If a row is less than half a page long, all of it is stored locally within the page. If it exceeds half a page, variable-length columns are chosen for external off-page storage until the row fits within half a page, as described in Section 17.11.2, “File Space Management”. 
- Although - InnoDBsupports row sizes larger than 65,535 bytes internally, MySQL itself imposes a row-size limit of 65,535 for the combined size of all columns. See Section 10.4.7, “Limits on Table Column Count and Row Size”.
- The maximum table or tablespace size is impacted by the server's file system, which can impose a maximum file size that is smaller than the internal 64 TiB size limit defined by - InnoDB. For example, the ext4 file system on Linux has a maximum file size of 16 TiB, so the maximum table or tablespace size becomes 16 TiB instead of 64 TiB. Another example is the FAT32 file system, which has a maximum file size of 4 GB.- If you require a larger system tablespace, configure it using several smaller data files rather than one large data file, or distribute table data across file-per-table and general tablespace data files. 
- The combined maximum size for - InnoDBlog files is 512GB.
- The minimum tablespace size is slightly larger than 10MB. The maximum tablespace size depends on the - InnoDBpage size.- Table 17.26 InnoDB Maximum Tablespace Size - InnoDB Page Size - Maximum Tablespace Size - 4KB - 16TB - 8KB - 32TB - 16KB - 64TB - 32KB - 128TB - 64KB - 256TB - The maximum tablespace size is also the maximum size for a table. 
- An - InnoDBinstance supports up to 2^32 (4294967296) tablespaces, with a small number of those tablespaces reserved for undo and temporary tables.
- Shared tablespaces support up to 2^32 (4294967296) tables. 
- The path of a tablespace file, including the file name, cannot exceed the - MAX_PATHlimit on Windows. Prior to Windows 10, the- MAX_PATHlimit is 260 characters. As of Windows 10, version 1607,- MAX_PATHlimitations are removed from common Win32 file and directory functions, but you must enable the new behavior.
- For limits associated with concurrent read-write transactions, see Section 17.6.6, “Undo Logs”.