【问题标题】:Storing a lot of tables on a DB server在数据库服务器上存储大量表
【发布时间】:2012-06-18 20:23:43
【问题描述】:

MySQL/PHP: 我有以下情况:我将在一台服务器上多次安装一个包含大约 70 个表的软件(要明确:这是一个 MyBB 论坛)。比如说,我将安装这个 500 次(500 个不同的论坛,比如说,10 个不同的主题和 5 种不同的语言,仅作为示例)。

我正在考虑以下选项:

  1. 将所有论坛存储在一个架构中,并更改每个论坛的前缀。
  2. 将每个论坛存储在不同的架构、相同的前缀中。
  3. 只创建一组 70 个表,并为每个表附加一个“forumID”以供选择。
  4. 创建多组 70 个表,为每个表附加一个 forumID,并为大约 10-100 个论坛使用一组表。

对于 1 和 2,我不必更改大部分 MyBB 代码(易于维护),对于 3 和 4,我必须编写某种搜索模式以用于每个查询以检测所有选择表并附加 WHERE 子句(如果不存在,则创建它)以还考虑 forumID(难以维护)。

如果我要通过 MyBB 维护来判断这一点,那将是前两个选项之一。但我还应该考虑:对于 MySQL 服务器来说,什么性能更高、速度更快?

谢谢, 克里斯

/edit:所有论坛都将使用相同的代码。我不想维护这个东西的 500 个不同的安装...

【问题讨论】:

  • 如果您需要安装 500 个论坛(我假设所有论坛都使用不同的 URL),您可能需要考虑使用不同的服务器和不同的数据库。否则他们会像地狱一样慢。如果您只想要不同的皮肤和语言,为什么不为数量有限的论坛提供它们作为扩展呢? IE,你的论坛案例只是一个例子,对吧?
  • 他们都将使用相同的代码——我不想维护 500 个不同的 MyBB 安装。那会更疯狂。在所有 500 个论坛都以某种方式填充之前,我不想在不同的服务器上传播……谢谢,Ben Lee,我也将阅读我的方式。

标签: php mysql performance hosting mybb


【解决方案1】:

我只是复制架构公关。论坛。

参数:

  1. 这是一个易于自动化的过程,自动化它可能比重写所有 SQL 语句以使用“forumid”列更快。
  2. 此解决方案可让您轻松扩展到新硬件。扩展数据库总是复杂且昂贵的(与扩展实例网络服务器相比)。
  3. 将每个论坛分开还可以让您将前 5 个论坛转移到单独的机器上。如果这是您从中赚钱的东西,您可以拥有“高级论坛”(每台服务器 10 个,x$/月)和“免费增值论坛”(免费,但它们都在一台服务器上,没有性能保证)
  4. 如果您有 500 个不同的论坛,那么每个论坛的利用率都会有很大差异。任何允许您为每个论坛使用不同表的解决方案都将导致数据库服务器上的缓存命中率更高,因为它能够更有效地缓存(并且缓存命中率是高的关键数据库性能)

【讨论】:

    【解决方案2】:

    我认为您应该忘记选项 3 和 4,因为:

    • 演出

    您的表会变大,它们的索引也会变大。较大的索引意味着较慢的插入。选择可能不会受到太大影响。

    据我所知,所有缓冲区和缓存都是实例范围的,因此在这方面,所有选项都是等效的。

    • 管理

    重构代码的麻烦,加上每次升级后需要重做工作(对我来说)足以放弃这个想法。此外,即使是升级过程也可能需要调整以适应您的自定义布局。

    您可能希望单独备份和恢复您的论坛。那你需要自己写备份脚本,mysqldump在这种情况下也帮不上忙。并在每次添加新表时更新备份脚本(可能在升级期间发生)。

    在升级过程中,数据库结构可能会发生变化。一口气改变整个结构可能听起来令人震惊。但是您需要同时关闭所有 500 个论坛,并进行很长的结构更改,而不是 500 个更小、更快的更改。

    • 可扩展性

    (主要适用于选项 4)如果需要,将一个单独的论坛数据库移动到另一台服务器似乎更困难。

    • 安全性

    如果入侵者破坏了您的应用程序,我相信她会更容易获得所有论坛的访问权限,但这只是一个疯狂的猜测。


    选项 1 和 2 的性能一样好,表是否在同一个数据库上只是语法问题。

    我更喜欢选项 2,因为它更容易为每个数据库授予访问权限。

    【讨论】:

    • 非常感谢!根据您在最后一句话中的推理,我认为您实际上是指选项 2。(?)
    【解决方案3】:

    我会选择替代方案 3(在其他表上创建一个论坛表和一个 forumID 列)。

    这样您就可以从您的应用程序创建新论坛,而无需管理不同的架构或表。

    在我看来,进行架构更改比在论坛表中创建新行要糟糕一个数量级。

    【讨论】:

      猜你喜欢
      • 2019-03-05
      • 2014-02-11
      • 1970-01-01
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多