MySQL中的最大表数

Joh*_*ohn 17 mysql

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

Dan*_*llo 27

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

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

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

  • 这个问题的一个很好的例子是Wordpress网络.此评论(3.5)的当前版本为每个站点创建九个表.即使是适度的安装,也可以很快地安装很多表. (6认同)
  • MyISAM是MySQL的默认存储引擎.除非您明确声明使用InnoDB,否则您的表可能正在使用MyISAM.每个MyISAM表都以三个文件存储在磁盘上.这些文件的名称以表名开头,并具有指示文件类型的扩展名..frm文件存储表格式.数据文件的扩展名为.MYD.索引文件的扩展名为.MYI.更多信息:http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html,http://en.wikipedia.org/wiki/MyISAM. (4认同)
  • 即使在指出问题之后仍然可以回答这个问题的+1,这可能不是一个好主意. (4认同)
  • 什么是MyISAM? (2认同)
  • 就其价值而言,我目前管理着一个包含大约 7,000 个站点的 Wordpress Multisite 安装。这相当于 63,000 张桌子。管理像这样的大型网络存在独特的挑战,但这当然很有可能。 (2认同)

rob*_*ess 6

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

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


小智 5

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

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


小智 5

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

8.4.5 数据库和表的数量限制

MySQL 对数据库数量没有限制。底层文件系统可能对目录数量有限制。

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