拥有超过一百万个表的数据库有什么危险?

时间:2016-01-20 15:59:48

标签: php mysql

MySql数据库可以处理超过一百万个表(大多数是小型,少于10行)吗?我开始了一个项目,它将存储大量文献,每个句子存储在一个由大约2-10行组成的不同表格中。以下是我的一些担忧。

  1. 这个数据库中执行SELECT和INSERT查询会减慢吗?多少钱?
  2. 网站托管服务是否对数据库中的表数量设置了限制?或者每个人都有普遍的限制吗?
  3. 还有什么我应该关注的吗?
  4. 我希望这是提出这个问题的正确位置。感谢。

    编辑:

    我知道“为什么”的问题会来临!我是众包翻译工作。我目前的计划是让文件的每个句子都有自己的表格。表格的每一行都有每个建议翻译的数据。例如: 表“文档”将包含正在处理的文档的列表。 表“document_1”将是一个文档的文本,每行包含一个句子。 表格“document_1_1”将包含每个建议的翻译。

    我愿意听取更好的计划:)

2 个答案:

答案 0 :(得分:2)

不,mysql对数据库中的表数没有限制。 虽然,显然,你会受到多少磁盘空间的限制 你有空。

  

数目:

  1. 可能很慢。慢,它可能会开始挂起。

  2. 我刚刚看到了数据库数量的限制,这是一种营销策略。我不知道桌子的数量。

  3. 一般认为,有一个数据库模式,其中表的数量会随着时间的推移而增长。强烈建议重新设计数据库。

  4. 而不是成千上万的表,只需要一个表。添加一个包含您用于命名表的文本的列。

      

    根据我的理解,你可以有一张这四张桌子   列:

         
        
    1. 主键 - bigint
    2.   
    3. 名称 - 文字大小100,这可以是您当前的表名(文件名)
    4.   
    5. 描述 - 最大文本大小,表中的数据在此列(文档文本)中
    6.   
    7. 翻译 - 最大文字大小,翻译在此栏中(翻译文本)
    8.         

      上面的第二列可能是非唯一的,并按照数字重复   表中的行数(2-10次)。

    如需更多帮助和建议,请发表您的问题,我知道很多人都很想知道您在这里做什么。

    PS。不是mysql的人,我相信你知道使用什么数据类型

答案 1 :(得分:1)

而不是评论,这是一些事实: 使用InnoDB,理论上可以有多达40亿个表。

MySQL将每个数据库存储在自己的文件夹中,其中每个表都包含1-3个文件。这意味着对于100万个表,您将拥有一个包含1-3百万个文件的文件夹。许多文件系统对一个文件夹中可以包含的文件数量有限制,因此根据文件系统的不同,您可能已经受到限制。

当我测试MySQL数据库中只有一个空表时,我得到了该表的两个文件。他们一起大约104 Kb。因此,对于100万个空表,服务器上的存储空间将超过100 Gb。

我不建议从性能和可维护性的角度来看这个架构。