MySQL中的最大表数

时间:2010-01-26 04:25:45

标签: mysql

MySQL可以处理的最大表数是多少?

5 个答案:

答案 0 :(得分:27)

您提出这个问题的事实可能表明您没有采用最佳实践方法解决您的问题。

您可能想要解释为什么需要创建多个表格,以便了解您是否会收到有关如何解决此问题的更好建议。

但是,MySQL数据库中的表数没有服务器限制,但由于每个MyISAM表都有关联文件,因此对允许的文件数量的任何操作系统限制都会产生影响。 InnoDB表,索引等存储在单个表空间中,最多包含20亿个表。 (Source

答案 1 :(得分:5)

我还有一个需要大量表的用例。目前,我们的一个数据库已经接近100,000个具有卓越性能的表。

正如Rob Guinness所说,.frm文件的开销很大。同样重要的是要注意,对information_schema的任何查询都没有对架构的限制,如果可能的话,表本身会在查询运行时导致严重的性能损失。

答案 2 :(得分:3)

与Daniel Vassallo的回答相反,我有一个需要大量表格的用例。我可能是错的,但我认为没有任何"最佳实践"通过它我可以减少表的数量。

尽管表的数量仅受操作系统的限制可能是正确的,但我只想补充一点,我在数据库中使用了超过1000个表,性能相当不错。唯一的缺点似乎是.frm文件的开销增加。在我的例子中,我将一个非常大的表拆分为1000多个具有相同表结构的独立表。由于非规范化,MySQL分区对我来说不是一个选项,它需要在不同的表中每个记录有2个副本。

答案 3 :(得分:3)

这是MySql的官方答案: https://dev.mysql.com/doc/refman/8.0/en/database-count-limit.html

8.4.5数据库和表的数量限制

MySQL对数据库数量没有限制。基础文件系统可能对目录数量有所限制。

MySQL对表的数量没有限制。基础文件系统可能会对表示表的文件数量有所限制。各个存储引擎可能会强加特定于引擎的约束。 InnoDB最多允许40亿张表。

答案 4 :(得分:1)

  

您提出此问题的事实可能是一个指标   您没有采用最佳实践方法处理您的问题。

您可能需要大量表格的一种可能情况是,在开发多租户应用程序时,您可以为每个租户创建单独的一组表格(让我们说使用tentantId作为表名前缀)。请参阅此文章(部分数据隔离):http://www.javacodegeeks.com/2013/11/architecting-a-multi-tenant-application.html