【问题标题】:One big table or many small tables一张大桌子或多张小桌子
【发布时间】:2011-11-17 06:53:28
【问题描述】:

我正在开发一个网站(基于 WordPress MU)。在这个网站上,用户可以创建自己的博客,可以完全自定义自己的博客(改变背景,写文章...),添加更多的用户到自己的博客...

最常见的查询是获取博客文章。 2 个不同的博客几乎不相关。

博客的信息可以通过两种方式存储在数据库中:

  1. 包含所有信息的几个表,每个博客都有标识 通过 blog_id。
  2. 许多表组。每组表包含一个博客的所有信息。更多博客,创建更多表格。

我的问题是:

  1. 就性能而言,哪一个更好?
  2. WordPress 实际上使用了第二种设计。如果博客数量 非常大(数千),那么表的数量可以 十 数以千计。这会导致任何问题吗?有没有限制 的 MySQL 数据库的表数?

【问题讨论】:

  • 这可能对你有所启发 - stackoverflow.com/questions/4419499/…
  • 谢谢 f00,真的很有帮助。在问这个问题之前我没有找到这个。对了,你知道我的第二个问题吗?

标签: mysql database wordpress database-design


【解决方案1】:

为了代码的可维护性,我请求你选择选项 1。

【讨论】:

  • 你打赌。 “敦促”,也许? “祈祷”怎么说? :)
  • 我在想“为了爱所有神圣的事物并同情那些追随者,请选择选项 1。”可能也可以... ;)
【解决方案2】:

选择选项#1 - 它被称为normalisation

【讨论】:

  • wp_blogs 仅存储博客 ID、博客 url... 博客的大部分信息都存储在为该博客创建的表中(例如 wp_1_posts、wp_1_users、wp_1_options...)
  • 我的错误。但你绝对应该选择选项 #1!
【解决方案3】:
  1. 在适当的索引下,它们的性能应该非常相似
  2. 管理大量表存在更多问题,尤其是在架构更改时

【讨论】:

  • 1.我真的不明白您所说的“给定适当的索引”是什么意思?两种设计的数据库索引方式是否相同(通过 MySQL)?我认为 WordPress 使用第二种设计,因为博客几乎没有连接,将它们分成许多表可能会更快。 2. 是的,你是对的。我使用phpMyAdmin,当表数超过10000时,它不能正常工作。
  • @Jack 当一个表被正确设计和索引时,表的大小与检索(相同数量)记录的速度几乎没有关系。这就是索引的目的——将搜索时间减少到 O(log n) 操作,这与 n 相比增长缓慢。假设该表有一个允许索引首先按博客“分区”的键,那么检索应该在很大程度上是等效的。通常是二分查找。 en.wikipedia.org/wiki/Twenty_Questions
【解决方案4】:

我进行了一些搜索,我想我经常看到有人说他们更喜欢一张包含很多数据的表格,而不是很多表格。他们说它更容易维护。

这是数据库规范化的一些文本:

http://support.microsoft.com/kb/283878
http://www.phlonx.com/resources/nf3/

祝你好运!

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 2017-02-07
    • 1970-01-01
    • 2012-05-23
    • 2011-05-04
    • 2018-04-09
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多