每个数据库都有一些使用限制,比如标识符的长度限制、单库/单表数据量限制、行宽限制、索引个数限制等。
本文就 TiDB 数据库中的一些使用限制做一个完整的说明,整体上分为有限制和无限制进行说明。
无限制
维度 |
Database 个数 |
Table 个数 |
View 个数 |
Connections 个数 |
单个 Database 中 Table 个数 |
单个 Table 的 Row 行数 |
单个 Table 的 Size 大小 |
有限制
维度 | 默认值上限 | 最大调整上限 | 调整参数 |
标识符长度(database/table/column/index/view/sequence) | 64 | / | / |
单表Column个数 | 1017 | 4096 | table-column-count-limitTiDB 配置文件描述 |
单表Index个数 | 64 | 512 | index-limitTiDB 配置文件描述 |
单表Partition个数 | 8192 | ||
单行Size大小 | 6 MB | 120 MB | txn-entry-size-limitTiDB 配置文件描述 |
单行Key大小 | 3072 Byte | 12288 Byte | max-index-lengthTiDB 配置文件描述 |
单索引Column个数 | 16 | / | / |
单Sql长度限制(受服务端和客户端一次传送数据包大小限制) | 64 MB | 1 GB | max_allowed_packet系统变量 |
单事务最大语句条数(仅限可重试的乐观事务模式下) | 5000 | 开启悲观事务或关闭事务重试后无限制 | stmt-count-limitTiDB 配置文件描述 |
部分超限错误提示
- 单表Column个数超限
ERROR 1117 (HY000): Too many columns
- 单表Index个数超限
ERROR 1069 (42000): Too many keys specified; max 64 keys allowed
- 单表Partition个数
ERROR 1499 (HY000): Too many partitions (including subpartitions) were defined
- 单行Size大小
ERROR 1406 (22001): Data too long for column 'b' at row 1
- 单行Key大小
ERROR 1071 (42000): Specified key was too long (4000 bytes); max key length is 3072 bytes
- 单索引Column个数
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed
参考文档
TiDB 使用限制