模式限制
- InnoDB表最多可包含1,017列。这包括
虚拟生成的列。
- InnoDB表最多可以有64个
次要索引。
- InnoDB上的多列索引最多可以使用
16列。如果您尝试创建使用以下内容的多列索引
超过16列,MariaDB返回错误1070。
尺寸限制
- 除了可变长度列(即VARBINARY,VARCHAR,BLOB和TEXT)外,InnoDB中的行最大长度约为4KB,8KB,16KB和32KB页面大小的一半。
li>
- BLOB和TEXT列的最大大小为4GB。这也适用于LONGBLOB和LONGTEXT。
- MariaDB对所有列的组合大小施加65,535字节的行大小限制。如果该表包含BLOB或TEXT列,则考虑到它们的内容是分开存储的,在此计算中它们仅占9-12个字节。
- 32位操作系统的最大文件大小限制为2GB。使用这种架构处理大型表时,请将InnoDB配置为使用较小的数据文件。
- 合并的InnoDB日志文件的最大大小为512GB。
- 对于表空间,最小大小为10MB,最大大小取决于InnoDB页面大小。
页面大小
使用innodb_page_size系统变量,您可以为InnoDB页面配置字节大小。页面默认为16KB。使用此变量的方式存在某些限制。
- 使用一个页面大小的MariaDB实例不能使用来自使用另一个页面大小的实例的数据文件或日志文件。
- 使用4KB或8KB的页面大小时,最大索引键长度会按比例减小。
您可以在official documentation
中阅读更多内容
InnoDB表限制为64TB;这可能会在一张表中允许640亿行。实际上,数据库中的表数没有限制,MariaDB实例中的数据库数也没有限制。
如果您PARTITION
一个表,则限制会进一步提高,可能增加到数万亿行。这是因为每个分区本质上都是一个单独的表。
有关限制的更多信息:http://mysql.rjweb.org/doc.php/limits在当前硬件上,任何实际应用都绝不会达到大多数限制。