关于mysql:MySQL数据库表各种大小限制小结

12次阅读

共计 1132 个字符,预计需要花费 3 分钟才能阅读完成。

本文所有条目总结均来自 mysql5.6 的官网英文文档:

table-size-limit

1. MySQL 表的列数限度

1.1 MySQL 硬性限度每个表最大 4096 个列

1.2 InnoDB 存储引擎的束缚: 每个表最大 1017 个列;

2. MySQL 表的每行数据的限度

2.1 MySQL 表限度 row size 最大 65535 个字节

2.2 InnoDB 限度 row size 最大半页, 默认页大小 16K, 也就是 row size < 8K;

3. MySQL 表总数据量的限度

3.1 一个表的总大小限度取决于操作系统的文件限度

1) windows fat32 的话, 最大就是 4G

如果要想超过 4G, 在 64 位 windows 上应用 NTFS ;

2) 其余的 windows 上的文件数的限度等

在 Windows 上,表空间文件的门路 (包含文件名) 不能超过 MAX_PATH 限度。

在 Windows 10 之前,MAX_PATH 的限度是 260 个字符。从 Windows 10 1607 版本开始,常见的 Win32 文件和目录函数中删除了 MAX_PATH 限度,然而必须启用新的行为。

3.2 默认 MyISAM 数据和索引文件最大到 256TB,但此限度可改为最大 65536TB

3.3 InnoDB 的表大小限度:64T(取决于页大小, 详见下 5)

4. MySQL 数据库的表个数: 无限度(InnoDB 容许 40 亿个表)

MySQL 对表的数量没有限度。

底层文件系统可能对示意表的文件数量有限度。

单个存储引擎可能会施加特定于引擎的束缚: InnoDB 容许多达 40 亿个表

5. 综上 - 总结 InnoDB 的限度

5.1 MySQL5.6 当前容许 InnoDB 表最多 1017 个列

5.2 一个 InnoDB 表最多容许 64 个二级索引

5.3 默认索引前缀长度最多 767bytes

5.4 联结索引最多容许 16 个列, 多了报错

5.5 InnoDB 的最大行大小为半页(小于 8K- 默认)

因为默认页大小为 16K, 要求是小于 half page size, 就是小于 8K;

innodb_page_size能够通过这个批改为 4K, 8K; 这样的话, rowsize 就限度为小于 2K, 4K 了;

尽管 InnoDB 外部反对大于 65,535 字节的行大小,但 MySQL 自身对所有列的合并大小施加了 65,535 的行大小限度。-? 跨页? 另设置?

5.6 innoDB 日志文件的最大组合大小是 512G

5.7 InnoDB 表空间大小限度 64T(表空间最大大小也是表的最大大小)

最小表空间大小略大于 10MB

最大表空间大小取决于 InnoDB 的页面大小:

InnoDB Page Size Maximum Tablespace Size
4KB 16TB
8KB 32TB
16KB 64TB

参考 1: Limits on Table Column Count and Row Size

参考 2: Limits on Table Size

正文完
 0