MySQL对于支持的数据库的数量,表的数量,表的大小以及表中列的个数和每行允许的大小方面分别都有着自己的一些规定。

mysql 表数量 性能 mysql数据库表数量限制_mysql 表数量 性能

#数据库的数量
MySQL本身没有数据库数量的限制,具体的数量限制取决于底层操作系统对目录数量的支持程度。

#表的数量限制
MySQL本身没有对表数量的限制,具体的数量限制取决于底层操作系统对文件数量的支持程度。一些存储引擎会有自己的额外限制,InnoDB最大允许有40亿张表。

#表大小的限制
MySQL本身没有对表的大小的限制,具体的大小限制取决于底层操作系统对文件大小的支持程度。现代操作系统中文件系统里文件大小的支持一般都在TB级别。

#表中列数量以及每行大小的限制
硬性指标是每张表最多4096列,但是实际上具体可用的列数受到行的最大尺寸限制,根据每一列的类型,可能小于这个数。

无论存储引擎是什么,每张表中一行的最大尺寸为65535 bytes。以 CHAR(255) CHARACTER SET utf8 定义的列,utf8每个字符最多会有3bytes的需求,所以255 * 3 = 765 bytes会被分配以存储该类型的值,一行最大列数则为 65535 / 765 = 85列。

一些存储引擎有自己的额外限制,InnoDB最大允许1000列,行尺寸需要小于数据库页的一半,大约8000bytes。

##BLOG(binary large object)存储
根据存储引擎的不同,某些数据类型不受相应的最大行尺寸的限制,比如BLOGTEXT

MySQL中提供BLOG(binary large object)类型解决纯粹的二进制数据的存储,TEXT类型解决大文本数据的存储,其存储的信息和字符集关联。

BLOG有4个类型TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB,每个类型有着自己允许的最大数据尺寸

类型

大小限制

TINYBLOB

127 bytes

BLOB

65535 bytes

MEDIUMBLOB

16777215 bytes

LONGBLOB

4294967295 bytes

TEXT有4个类型TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT,其和对应的BLOG类型有着同样的允许的最大数据尺寸。