管理多个MySQL 1gb数据库,数据输入来自PHP应用程序


Managing multiple MySQL 1 GB databases with data input from PHP application

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

在一个相关的注意事项上,我的应用程序如何知道何时创建另一个表(或切换到另一个手动创建的表)?例如,如果我有一个数据库,其中装满了1gb的数据,我希望我的应用程序在没有任何服务延迟的情况下继续工作。如何控制从一个表到另一个新创建的数据库的数据输入?

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

这是一个非常抽象的问题,我不确定通用的stackoverflow是正确的地方。

无论如何。存储的最佳实践方法是什么?例如:在磁盘上的文件中。请记住,数据库只是一个美化了的文件,它有漂亮的"读"answers"写"命令。

优化是困难的,你只能交易东西。CPU用于内存使用,读取速度用于写入速度,批量数据存储或速度。(或者找一个更好的主机提供商,让你的数据库和你想要的一样大;))

回答你的第二个问题,如果你使用你的数据库方法,你将需要设置一些系统来"迁移"用户从一个数据库到另一个数据库,如果一个数据库满了。如果达到1GB的80%,就开始迁移用户。

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

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

你也可以选择你的主机,而不用看他们支持什么数据库和大小。