我有两条路线,

1)为每个用户创建子表并存储其个人内容

2)创建几个表并在其中存储所有用户的数据。

例如。

1)100,000个表,每个表有1000行

2)50个表,每个表具有2,000,000行

我想知道哪条路线是最好和最有效的。

背景信息:与Facebook一样,数百万用户可以看到他们的帖子,照片和标签。所有这些信息都在一些巨型表格中供所有用户使用,或者每个用户都有其自己的子表。

最佳答案

这是MySQL中这两种方法的优缺点。

1.很多小 table 。

缺点:

  • 使用更多的并发表意味着需要更多的文件描述符(请检查this)
  • 有100.000个表的数据库是一团糟。

  • 优点:
  • 小表意味着小索引。小索引可以完全加载到内存中,这意味着您的查询将运行得更快。
  • 另外,由于索引较小,因此像插入这样的数据操作将运行得更快。

  • 2.大表很少

    缺点:
  • 一个巨大的表意味着非常大的索引。如果无法将索引完全加载到内存中,则大多数查询将非常慢。

  • 优点:
  • 数据库(以及您的代码)清晰易维护。
  • 如果表太大,则可以使用分区。 (检查this)。

  • 根据我的经验,一个两百万行的表(我已经处理过七千万行的表),如果您能够将所有 Activity 索引加载到内存中,在MySQL下就不是性能问题。

    如果您有很多并发用户,建议您评估其他技术,例如Elastic Search,这种技术似乎更适合此类情况。

    关于php - MySQL性能-表数与之比较。行数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9965203/

    10-09 05:43
    查看更多