mysql数据库最大表数量和最大库数量 博客分类: mysql极限
程序员文章站
2024-02-10 11:43:04
...
刚刚开始接触mysql,对mysql的配置项里是否有对一个数据库中,是否有最大数据表的限制,后面查询了相关资料,才发现,mysql数据库中,对单个数据库中的最大允许建立的数据表是没有配置项,也就是说没有限制的。
mysql单数据库对数据表限制数量的问题:
1.一个数据库是没有表现值的,或者说这个被限制的值很大
2.一个mysqld服务可以支持的表对象数量是,42亿多点,所以这个限制基本上不需要考虑
从性能考虑的话,一个数据库建立多少张表适合的问题:
1.当一个数据库或实例中,表太多,意味着可能同时需要打开的表,从操作系统角度说就是:文件描述符很多,这个操作系统有限制的,但是可以修改操作系统的内核参数达到
2.多少表性能就会下降,分2点阐述
2.1.分表多,意味着需要维护的表结构和统计信息多,一般情况下此不会成为任何瓶颈,但是太不合理,比如几万甚至更大,可能就有问题了
2.2.性能是否下降明显,最直接的就是:跟服务器的承载能力和数据量有关系,这个是最直接的
3.反问“为何要分很多表”呢?
3.1.分表太多,容易造成程序逻辑复杂,降低性能,以及增加出错的风险点
3.2.若是表中的数据量(指容量,多少GB)很大,只是分表解决不了问题,因为在同一个服务器上,其物理IO能力最优先达到瓶颈
所以,一个数据库建立多少表,这个MYSQL是没有限制的。但是从性能考虑,肯定是有一定影响的,但是从IO和其他服务器性能考虑,这块的性能基本上还不足影响到很大成份。所以建议大家一个数据库建立在二百个表以下,这样也是比较合理的了。影响性能也不大。
但是如果你执意要知道MYSQL能够建立多少个表的话,可以参考以下理论值的资料吧:
在mysql中,每个数据库最多可创建20亿个表,一个表允许定义1024列,每行的最大长度为8092字节(不包括文本和图像类型的长度)。
当表中定义有varchar、nvarchar或varbinary类型列时,如果向表中插入的数据行超过8092字节时将导致Transact-SQL语句失败,并产生错误信息。