MySQL性能 - 表的数量.行数

6 php mysql mysql-management

我有两条路,

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

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

例如.

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

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

我想知道哪条路线最好,最有效率.

背景:像Facebook,数百万用户,他们的帖子,照片,标签.所有这些信息都在一些巨型表中供所有用户使用,或者每个用户都拥有自己的子表.

jor*_*deu 7

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

1.许多小桌子.

缺点:

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

优点:

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

很少有大桌子

缺点:

  • 一张巨大的表意味着非常大的指数.如果您的索引无法完全加载到内存中,则大多数查询都会非常慢.

优点:

  • 数据库(以及您的代码)清晰易懂.
  • 如果表格变得如此之大,您可以使用分区.(检查一下).

根据我的经验,我有一个包含两百万行的表(我已经使用了7000万行表),如果你能够在内存中加载所有活动索引,那么MySQL下的性能问题就不是了.

如果您有许多并发用户,我建议您评估其他技术,如弹性搜索,这似乎更适合这种情况.