【问题标题】:Managing multiple MySQL 1 GB databases with data input from PHP application使用来自 PHP 应用程序的数据输入管理多个 MySQL 1 GB 数据库
【发布时间】:2012-01-16 09:53:42
【问题描述】:

我正在创建一个使用 MySQL 和 PHP 的应用程序。我当前的网络托管服务提供商的 MySQL 数据库大小限制为 1 GB,但我可以创建许多 1 GB 的数据库。即使能够找到另一个允许更大数据库的网络托管服务提供商,我想知道更大的数据库如何影响数据完整性和速度?就磁盘大小而言,保持数据库较小是否更好?换句话说,存储来自数千个用户的相同数据(所有文本)的最佳实践方法是什么?我是数据库设计和规划的新手。最终,我会想象一个包含来自数千个用户的数据的单一数据库会变得效率低下,并且最好将数据分布在较小的数据库中。我说的对吗?

在相关说明中,我的应用程序如何知道何时创建另一个表(或切换到另一个手动创建的表)?例如,如果我有 1 个数据库,其中填充了 1 GB 的数据,我希望我的应用程序继续工作而不会出现任何服务延迟。如何控制从 1 个表到第二个新创建的数据库的数据输入?

类似地,如果一个用户在 2011 年加入该网站并创建了 100 条信息记录,而其他成千上万的用户也这样做了,那么 1 GB 的数据库就会被填满。稍后,该原始用户添加了另外 100 条在另一个 1 GB 数据库中创建的记录。我的 PHP 代码如何知道要查询 2 组 100 条记录的数据库?这会在 MySQL 端以某种方式自动管理吗?是否需要在 PHP 代码中管理 IF/THEN/ELSE 语句?这是一些网络托管服务提供商提供的服务吗?

【问题讨论】:

  • 这是一个非常广泛的问题。关于您的第一段的书籍已经写过......
  • 1GB 是一大堆用于文本存储的空间,开始输入二进制数据,一切都结束了。
  • 您应该找到另一个允许您保留更大数据库的托管服务提供商。 1GB 甚至不是一个大型数据库。正如您在第三段中所指出的,分割成 1GB 的块只会导致精神错乱。
  • 另外,我注意到“……存储相同的数据……”。那可能是个问题。如果数据都相同,则应该只存储一次。您应该阅读包括规范化在内的数据库设计。您的问题太宽泛,无法在 SO 上合理回答。回答这个问题至少需要一整本书。

标签: php mysql database database-design database-connection


【解决方案1】:

这是一个非常抽象的问题,我不确定通用的 stackoverflow 是否适合这样做。

无论如何。存储的最佳实践方法是什么?怎么样:在磁盘上的文件中。请记住,数据库只是具有花哨的“读取”和“写入”命令的美化文件。

优化很难,你只能交易东西。 CPU用于内存使用,读取速度用于写入速度,批量数据存储或速度。 (或者找一个更好的主机提供商,让你的数据库随心所欲;))

要回答您的第二个问题,如果您确实采用了数据库方法,则需要设置一些系统,以便在一个数据库已满时将用户从一个数据库“迁移”到另一个数据库。如果达到 1GB 的 80%,请开始迁移用户。

检测数据库的大小是一个棘手的问题。你可以,我想看看磁盘上的 RAW 文件有多大,但也许还有更聪明的方法。

【讨论】:

  • 感谢大家的反馈。我想我正在寻找一个起点。听起来我应该开始阅读有关该主题的书。如果 1 GB 被认为是小型数据库,那么什么会被认为是大型数据库?我将不得不研究网络托管服务提供商以了解他们提供的服务。
  • 一个大型数据库在一台机器上不再可行时会是什么时候?
  • 我强烈推荐 O'reilly “高性能 MySQL” 作为这个入门。 Frits 让您处于领先地位,但您需要的信息比 SO 所能提供的要多得多。有整个书架专门讨论这个主题。
【解决方案2】:

我建议使用 SQLite 将是您的最佳选择。它支持 2 TB(2^41 字节)的数据库,最好的部分是它不需要服务器端安装。所以它在任何地方都兼容。您所需要的只是一个使用 SQLite 数据库的库。

您也可以选择您的主机,而无需查看它们支持哪些数据库和大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多